Невозможно создавать твиты с помощью 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!");
    }
}];

Однако после нажатия кнопки «Подключиться» на экране [Подключить учетную запись] приложение вернулось без создания твита (твиттер уже вошел в систему). Кажется, showFromViewController не запустился. У кого-нибудь была такая же проблема?


person Huong Tran    schedule 07.09.2017    source источник
comment
Я заставил его работать, следуя этой инструкции (она на японском языке, но вам не нужно понимать японский, чтобы читать ее, просто прочитайте код:)) iphone-app-developer.seesaa.net/article/452391500.html   -  person Huong Tran    schedule 08.09.2017
comment
Я с той же проблемой. Есть ли у вас представление о том, что именно вызвало проблему на этапе «Подключить учетную запись»?   -  person cdub    schedule 04.11.2017


Ответы (1)


Прежде всего получите разрешение на чтение/запись в Твиттере для вашего приложения.

    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 проверяет существующих пользователей с разрешениями на чтение, я имею в виду, что использование этого ключа является необязательным.

person Anıl Sözeri    schedule 29.09.2017