Проблема, когда пользователь "отменяет доступ" для приложения, когда я использую платформу Twitter

Я использовал фреймворк Twitter, предоставленный самим Twitter, для реализации функциональности "Войти через Twitter".

Согласно их документации, он использует учетную запись Twitter системы iOS (учетную запись, которая была настроена пользователем в приложении настроек iOS). Он работает нормально, например, если пользователь настроил учетную запись в настройках, то он не будет запрашивать учетные данные. Если пользователь не настроил учетную запись в настройках, то будет отображаться экран входа в систему. У меня нет проблем с этим, что касается потока и моего требования.

Но если пользователь заходит в свою учетную запись Twitter и аннулирует доступ к этому приложению, тогда мне это не подходит. Я все еще могу получить информацию о пользователе, используя метод Twitter. Я пропускаю что-то, что могло быть предоставлено Твиттером?

Вот мой фрагмент кода. При успешном входе я позвонил usersShow метод. В этом методе я могу получать пользовательские данные, даже если пользователь отзывает разрешение для приложения из учетной записи Twitter (с сайта). Если пользователь не дал разрешения на приложение, то должно быть что-то другое, что я должен получить. Возможно, я что-то упустил.

#pragma mark
#pragma mark - Twitter framework

- (IBAction)btnTwitterLogin_pressed:(id)sender
{
    [[Twitter sharedInstance] logInWithCompletion:^
     (TWTRSession *session, NSError *error) {
         if (session) 
         {
             // This session is then used to make Twitter API requests.
             NSLog(@"%@", [session userID]);
             NSLog(@"%@", [session userName]);
             NSLog(@"%@", [session authToken]);
             NSLog(@"%@", [session authTokenSecret]);

             [self usersShow:[session userID]];
             //[self getUserWithUserID:[session userID]];
         }
         else 
         {
             NSLog(@"Error: %@", [error localizedDescription]);
         }
     }];
}

-(void)usersShow:(NSString *)userID
{
    NSString *statusesShowEndpoint = kURLTwitterUserInfo;
    NSDictionary *params = @{@"user_id": userID};

    NSError *clientError;
    NSURLRequest *request = [[[Twitter sharedInstance] APIClient]
                             URLRequestWithMethod:@"GET"
                             URL:statusesShowEndpoint
                             parameters:params
                             error:&clientError];

    if (request) {
        [[[Twitter sharedInstance] APIClient]
         sendTwitterRequest:request
         completion:^(NSURLResponse *response,
                      NSData *data,
                      NSError *connectionError) {
             if (data) {
                 // handle the response data e.g.
                 NSError *jsonError;
                 NSDictionary *json = [NSJSONSerialization
                                       JSONObjectWithData:data
                                       options:0
                                       error:&jsonError];
                 NSLog(@"%@",[json description]);
                 // I am being able to get user data here...
             }
             else {
                 NSLog(@"Error code: %ld | Error description: %@", (long)[connectionError code], [connectionError localizedDescription]);
             }
         }];
    }
    else {
        NSLog(@"Error: %@", clientError);
    }
}

-(IBAction)btnTwitterLogout_pressed:(id)sender
{
    [[Twitter sharedInstance] logOut];
}

0 ответов

Другие вопросы по тегам