Невозможно создавать твиты с помощью Twitter Kit 3
Я следовал инструкциям из https://dev.twitter.com/twitterkit/ios/compose-tweets для создания твитов через приложение Object C для iOS 11
// Objective-C
TWTRComposer *composer = [[TWTRComposer alloc] init];
[composer setText:@"just setting up my Twitter Kit"];
[composer setImage:[UIImage imageNamed:@"twitterkit"]];
// Called from a UIViewController
[composer showFromViewController:self completion:^(TWTRComposerResult result) {
if (result == TWTRComposerResultCancelled) {
NSLog(@"Tweet composition cancelled");
}
else {
NSLog(@"Sending Tweet!");
}
}];
Однако после нажатия кнопки "Подключить" на экране [Подключить учетную запись] приложение вернулось назад без создания твита (Twitter уже вошел в систему). Кажется, showFromViewController не работает. У кого-нибудь была такая же проблема?
1 ответ
Прежде всего, получите разрешение на чтение / запись для вашего приложения в Twitter.
if ([[Twitter sharedInstance].sessionStore hasLoggedInUsers]) {
NSString *twitterLoggedInInfo = [[NSUserDefaults standardUserDefaults] objectForKey:@"TwitterLoggedInInfo"];
if (![twitterLoggedInInfo isEqualToString:@"v3"]) {
NSString *currentUserID = [Twitter sharedInstance].sessionStore.session.userID;
[[Twitter sharedInstance].sessionStore logOutUserID:currentUserID];
[[NSUserDefaults standardUserDefaults] setObject:@"v3" forKey:@"TwitterLoggedInInfo"];
[[NSUserDefaults standardUserDefaults] synchronize];
[[Twitter sharedInstance] logInWithCompletion:^(TWTRSession *session, NSError *error) {
if (session) {
TWTRComposerViewController *composer = [[TWTRComposerViewController alloc] initWithInitialText:tweetText image:tweetImage videoURL:nil];
[self presentViewController:composer animated:YES completion:nil];
}
}];
} else {
if (![twitterLoggedInInfo isEqualToString:@"v3"]) {
[[NSUserDefaults standardUserDefaults] setObject:@"v3" forKey:@"TwitterLoggedInInfo"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
TWTRComposerViewController *composer = [[TWTRComposerViewController alloc] initWithInitialText:tweetText image:tweetImage videoURL:nil];
[self presentViewController:composer animated:YES completion:nil];
}
} else {
[[Twitter sharedInstance] logInWithCompletion:^(TWTRSession *session, NSError *error) {
if (session) {
TWTRComposerViewController *composer = [[TWTRComposerViewController alloc] initWithInitialText:tweetText image:tweetImage videoURL:nil];
[self presentViewController:composer animated:YES completion:nil];
}
}];
}
Ключ TwitterLoggedInInfo проверяет наличие у вас только прав доступа для чтения, я имею в виду, что использование этого ключа является необязательным