Как получить токен доступа Facebook на iOS
начинающий iOS здесь. У меня есть следующий код:
[facebook authorize:nil delegate:self];
NSString *string1=[facebook accessToken];
NSLog(string1);
журнал показывает: miFOG1WS_7DL88g6d95Uxmzz7GCShsWx_FHuvZkmW0E.eyJpdiI6IjNZZkFBY1c5ZnBaMGEzOWM2RzNKbEEifQ.LNjl06lsOQCO9ArVARqff3Ur2XQHku3CMHDBKkpGg351EB33LGxVv96Hh5R860KDJL0cLq8QezSW0GovYxnhUucOwxlITV364sVKDXIzC3bAn9P_74r2Axl1SgOaTyMMkQ_aSQ2OWh-8d3Zn9BDt3pXVWzBLJ9I4XAosnw0GjuE
Это кажется слишком длинным, чтобы быть маркером доступа. Я читал, что он должен быть длиной всего 40 символов. Что я делаю не так?
9 ответов
вы можете использовать метод делегирования:
- (void)fbDialogLogin:(NSString *)token expirationDate:(NSDate *)expirationDate
для более подробной информации вы можете обратиться к следующему вопросу :Facebook Маркер Доступа
использование v3.2.1 по состоянию на 20 марта 2013 года Facebook SDK.
NSString *fbAccessToken = [[[FBSession activeSession] accessTokenData] accessToken];
если вы предпочитаете синтаксис с точкой,
NSString *fbAccessToken = [FBSession activeSession].accessTokenData.accessToken;
для тех, кто использует Swift;
var fbAccessToken = FBSession.activeSession().accessTokenData.accessToken
обновление для v4.1.0 SDK вперед
С
NSString *fbAccessToken = [FBSDKAccessToken currentAccessToken].tokenString;
Свифт
var fbAccessToken = FBSDKAccessToken.currentAccessToken().tokenString
Если вы используете Facebook SDK, вы можете использовать FBSession
объект для получения и accessToken.
Если пользователь прошел проверку подлинности в приложении, и у вас есть активный сеанс использования:
NSString * accessToken = [[FBSession activeSession] accessToken];
чтобы получить маркер доступа.
это сработало для меня.
- (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];
}
}];
}
проверьте код ниже для получения access_token из 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 с SDK 3.2.1:
let token = FBSession.activeSession().accessTokenData.accessToken