如何在iOS上获得Facebook访问令牌

iOS初学者在这里。 我有以下代码:

[facebook authorize:nil delegate:self]; NSString *string1=[facebook accessToken]; NSLog(string1); 

日志显示: miFOG1WS_7DL88g6d95Uxmzz7GCShsWx_FHuvZkmW0E.eyJpdiI6IjNZZkFBY1c5ZnBaMGEzOWM2RzNKbEEifQ.LNjl06lsOQCO9ArVARqff3Ur2XQHku3CMHDBKkpGg351EB33LGxVv96Hh5R860KDJL0cLq8QezSW0GovYxnhUucOwxlITV364sVKDXIzC3bAn9P_74r2Axl1SgOaTyMMkQ_aSQ2OWh-8d3Zn9BDt3pXVWzBLJ9I4XAosnw0GjuE

这似乎太长,不能成为一个访问令牌。 我读它应该只有40个字符长。 我究竟做错了什么?

你可以使用委托方法:

 - (void)fbDialogLogin:(NSString *)token expirationDate:(NSDate *)expirationDate 

有关更多信息,您可以参考以下问题: Facebook访问令牌

截至2013年3月20日的Facebook SDK使用v3.2.1。

 NSString *fbAccessToken = [[[FBSession activeSession] accessTokenData] accessToken]; 

如果你喜欢点语法,

 NSString *fbAccessToken = [FBSession activeSession].accessTokenData.accessToken; 

对于那些使用Swift的人来说

 var fbAccessToken = FBSession.activeSession().accessTokenData.accessToken 

从v4.1.0 SDK开始更新

Objective-C的

 NSString *fbAccessToken = [FBSDKAccessToken currentAccessToken].tokenString; 

迅速

 var fbAccessToken = FBSDKAccessToken.currentAccessToken().tokenString 

如果您正在使用Facebook SDK,则可以使用FBSession对象获取和访问令牌。 如果用户通过了应用程序的authentication,并且有一个活动会话,则使用:

 NSString * accessToken = [[FBSession activeSession] accessToken]; 

获取访问令牌。

它为我工作。

适用于SDK 4.0

 NSString *fbAccessToken = [[FBSDKAccessToken currentAccessToken] tokenString]; 

对于Swift 1.2和FB SDK 4.1:

 var fbAccessToken = FBSDKAccessToken.currentAccessToken().tokenString 
 - (IBAction)facebookClick:(id)sender { FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; [login logOut]; login = [[FBSDKLoginManager alloc] init]; login.loginBehavior = FBSDKLoginBehaviorWeb; [login logInWithReadPermissions:@[@"email"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { if (error) { NSLog(@"Process error"); // [login logOut]; } else if (result.isCancelled) { NSLog(@"Cancelled"); // [login logOut]; } else { NSLog(@"Logged in"); [self getUserInformation]; } }]; } 

检查下面的代码从ACAccountStore获取access_token:

 ACAccountStore *accountStore = [[ACAccountStore alloc] init]; ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; NSDictionary *FBOptions = [NSDictionary dictionaryWithObjectsAndKeys:FACEBOOK_APP_ID, ACFacebookAppIdKey,@[@"email"],ACFacebookPermissionsKey, nil]; [accountStore requestAccessToAccountsWithType:accountType options:FBOptions completion: ^(BOOL granted, NSError *error) { if (granted) { NSArray *facebookAccounts = [accountStore accountsWithAccountType:accountType]; FBAccount = [facebookAccounts firstObject]; NSLog(@"token :%@",[[FBAccount credential] oauthToken]); } else { //Error NSLog(@"error getting permission %@",error); if([error code]== ACErrorAccountNotFound){ NSLog(@"Account not found. Please setup your account in settings app"); } else { NSLog(@"Account access denied"); } } }]; 

对于需要使用SDK 3.2.1的swift的用户:

 let token = FBSession.activeSession().accessTokenData.accessToken