Iphone 如何在iOS上获取Facebook访问令牌
我是新手。我有以下代码:Iphone 如何在iOS上获取Facebook访问令牌,iphone,facebook,access-token,Iphone,Facebook,Access Token,我是新手。我有以下代码: [facebook authorize:nil delegate:self]; NSString *string1=[facebook accessToken]; NSLog(string1); 日志显示:mifog1ws7dl88g6d95uxmzz7gcshswx(FHuvZkmW0E.eyjpdiijnzkfb1c5znbamgezowm2rznkbeeifq.lnjl06lsoqco9arqf3ur2xqhku3cmhdbkkkpgg351eb33lgxvv9
[facebook authorize:nil delegate:self];
NSString *string1=[facebook accessToken];
NSLog(string1);
日志显示:mifog1ws7dl88g6d95uxmzz7gcshswx(FHuvZkmW0E.eyjpdiijnzkfb1c5znbamgezowm2rznkbeeifq.lnjl06lsoqco9arqf3ur2xqhku3cmhdbkkkpgg351eb33lgxvv96hh5r860kdjl0cl8qezw0goveryxnhuuwxlizv364svkdxizc3ban9p\u74r2r2axl1znoatymmkq\asq2h8zn4xg8znbd9wwwg9gjg8zwgj>
这似乎太长,不能作为访问令牌。我读到它应该只有40个字符长。我做错了什么?您可以使用委托方法:
- (void)fbDialogLogin:(NSString *)token expirationDate:(NSDate *)expirationDate
有关更多信息,请参考以下问题:如果您使用的是Facebook SDK,则可以使用FBSession
对象获取和访问令牌。
如果用户已通过应用程序身份验证,并且您有活动会话,请使用:
NSString * accessToken = [[FBSession activeSession] accessToken];
获取访问令牌
它对我很有用。从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以后版本的更新
目标-C
迅捷的
对于需要结合SDK 3.2.1使用swift的用户:
let token = FBSession.activeSession().accessTokenData.accessToken
适用于SDK 4.0
NSString *fbAccessToken = [[FBSDKAccessToken currentAccessToken] tokenString];
对于Swift 1.2和FB SDK 4.1:
var fbAccessToken = FBSDKAccessToken.currentAccessToken().tokenString
检查以下代码以从ACAccountStore获取访问令牌:
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");
}
}
}];
Swift 4(2018年)
用于FacebookLogin(0.9.0)Swift
我不确定长度,你可以在这个问题上看到没有固定的长度,谢谢@NurImranIzamQuick follow question-生成的这个令牌是他们文档中描述的“长期”访问令牌吗?谢谢我相信从本地客户端获得的所有代币都被认为是“长期的”。唯一的“短期”可能是针对web客户端。如果我错了,请随时纠正我。您可以在此处阅读更多信息:对于Swift,语法为FBSDKAccessToken.currentAccessToken().tokenStringFor Swift 3,FBSDKAccessToken.current().TokenStringAbdus.me建议的方法在3.2 SDK中不推荐使用。访问accessToken的正确方法是Nur Iman Izam建议的方法:如果([[FBSession activeSession]isOpen]){NSString*fbAccessToken=[[FBSession activeSession]accessTokenData]accessToken];…}虽然这个代码片段可以解决这个问题,但确实有助于提高文章的质量。请记住,您回答的问题不仅针对此人,而且针对将来可能不知道您的代码为何如此的读者。
var fbAccessToken = FBSDKAccessToken.currentAccessToken().tokenString
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");
}
}
}];
- (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];
}
}];
}
FBSDKAccessToken.current().tokenString
import FacebookLogin
AccessToken.current?.tokenString