2014-08-29 35 views
0

我尝试了下面的代码,但它正在处理错误。如何以ios最佳方式获取facebook accessToken?

- (void) openActiveSessionWithPermissions: (NSArray *) arr 
{ 
    if ([FBSession activeSession].state == FBSessionStateCreatedTokenLoaded){ 
     [self openWithUI:NO permissions:arr]; 
    } else if ([FBSession activeSession].state == FBSessionStateOpen || [FBSession activeSession].state == FBSessionStateOpenTokenExtended){ 
     [[FBSession activeSession] closeAndClearTokenInformation]; 
    } else { 
     [[FBSession activeSession] closeAndClearTokenInformation]; 
     [self openWithUI:YES permissions:arr]; 
    } 
} 

- (void) openWithUI: (BOOL) UI permissions: (NSArray *) permissions 
{ 
    [FBSession openActiveSessionWithReadPermissions:permissions allowLoginUI:UI completionHandler:^(FBSession *session, FBSessionState state, NSError *error) { 

     if (error) { 
      [self.delegate didReceieveError:[error description]]; 
     } else { 
      [self.delegate didTakeAccessToken:session.accessTokenData.accessToken]; 
     } 
    }]; 
} 

我找不到我的错误。 什么是accesToken的最佳途径?谢谢。

+0

如果'openActiveSessionWithPermissions声明:'看起来'openActiveSessionWithReadPermissions陌生和完成处理程序:'会被多次调用。阅读文件。 – kelin 2014-08-29 13:36:49

回答

0

试试这个:

[FBSession openActiveSessionWithReadPermissions:@[@"basic_info", @"email"] 
              allowLoginUI:YES 
             completionHandler: 
     ^(FBSession *session, FBSessionState state, NSError *error) 
     { 
      if (FBSession.activeSession.isOpen) 
      { 
       [[FBRequest requestForMe] startWithCompletionHandler: 
        ^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) 
        { 
         if (!error) 
         { 
          //Get AccessToken        
          NSString *aStrFBAccessToken = [[[FBSession activeSession] accessTokenData] accessToken];    
         } 
        }]; 
      } 
     }]; 
+0

我试过了,但它确实检查accessToken是否有效 – 2014-08-29 13:51:11