Ответ 1
Вы можете использовать метод делегата:
- (void)fbDialogLogin:(NSString *)token expirationDate:(NSDate *)expirationDate
для получения дополнительной информации вы можете обратиться к следующему вопросу: 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 токен доступа
Использование v3.2.1 по состоянию на 20 марта 2013 года в SDK для Facebook.
NSString *fbAccessToken = [[[FBSession activeSession] accessTokenData] accessToken];
Если вы предпочитаете синтаксис точки,
NSString *fbAccessToken = [FBSession activeSession].accessTokenData.accessToken;
Для тех, кто использует Swift;
var fbAccessToken = FBSession.activeSession().accessTokenData.accessToken
Обновление для SDK версии 4.1.0
Objective-C
NSString *fbAccessToken = [FBSDKAccessToken currentAccessToken].tokenString;
Свифта
var fbAccessToken = FBSDKAccessToken.currentAccessToken().tokenString
Если вы используете SDK для Facebook, вы можете использовать объект FBSession
для доступа и доступа к Token.
Если пользователь аутентифицирован в приложении и у вас есть активный сеанс, используйте:
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];
}
}];
}
Проверьте код ниже, чтобы получить 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");
}
}
}];
FBSDKAccessToken.current().tokenString
Для людей, которым нужно быстро использовать SDK 3.2.1:
let token = FBSession.activeSession().accessTokenData.accessToken
Для FacebookLogin (0.9.0) Swift
import FacebookLogin
AccessToken.current?.tokenString