如何在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