当我使用Twitter框架时,用户“撤消对App的访问”时出现问题

时间:2015-05-19 09:03:56

标签: ios twitter acaccount acaccountstore

我使用了Twitter本身提供的Twitter框架来实现“使用Twitter登录”功能。

根据他们的文档,它利用iOS系统的Twitter帐户(用户在iOS设置应用程序中配置的帐户)。它工作正常,例如如果用户在“设置”中配置了帐户,则不会要求提供凭据。如果用户尚未在“设置”中配置帐户,则会提升登录屏幕。就流程和我的要求而言,我没有任何问题。

但是,如果用户访问他/她的Twitter帐户,并撤销该APP的访问权限,那么事情对我来说就不合适了。我仍然可以使用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 个答案:

没有答案