Как получить токен доступа Facebook на iOS - PullRequest
34 голосов
/ 16 мая 2011

iOS для начинающих здесь.У меня есть следующий код:

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

Журнал показывает: miFOG1WS_7DL88g6d95Uxmzz7GCShsWx_FHuvZkmW0E.eyJpdiI6IjNZZkFBY1c5ZnBaMGEzOWM2RzNKbEEifQ.LNjl06lsOQCO9ArVARqff3Ur2XQHku3CMHDBKkpGg351EB33LGxVv96Hh5R860KDJL0cLq8QezSW0GovYxnhUucOwxlITV364sVKDXIzC3bAn9P_74r2Axl1SgOaTyMMkQ_aSQ2OWh-8d3Zn9BDt3pXVWzBLJ9I4XAosnw0GjuE

Это кажется слишком длинным, чтобы быть маркером доступа.Я читал, что он должен быть длиной всего 40 символов.Что я делаю не так?

Ответы [ 9 ]

121 голосов
/ 21 марта 2013

Использование 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 и выше

Objective-C

NSString *fbAccessToken = [FBSDKAccessToken currentAccessToken].tokenString;

Swift

var fbAccessToken = FBSDKAccessToken.currentAccessToken().tokenString
8 голосов
/ 13 ноября 2012

Если вы используете Facebook SDK, вы можете использовать объект FBSession для получения и доступа к ToToken. Если пользователь прошел аутентификацию в приложении и у вас активная сессия, используйте:

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

чтобы получить токен доступа.

У меня это сработало.

4 голосов
/ 18 мая 2015

Для Swift 1.2 и FB SDK 4.1:

var fbAccessToken = FBSDKAccessToken.currentAccessToken().tokenString
4 голосов
/ 01 апреля 2015

для SDK 4.0

NSString *fbAccessToken = [[FBSDKAccessToken currentAccessToken] tokenString];
4 голосов
/ 16 мая 2011

Вы можете использовать метод делегата:

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

для получения дополнительной информации вы можете обратиться к следующему вопросу: Токен доступа Facebook

2 голосов
/ 19 июня 2016
- (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];
         }
     }];
}
1 голос
/ 13 июля 2018

Свифт 4 (2018)

FBSDKAccessToken.current().tokenString
1 голос
/ 13 апреля 2016

Проверьте код ниже для получения 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");
         }

     }
 }];
0 голосов
/ 06 декабря 2014

Для людей, которым нужно использовать swift с SDK 3.2.1:

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