débutant iOS ici. J'ai le code suivant:
[facebook authorize:nil delegate:self];
NSString *string1=[facebook accessToken];
NSLog(string1);
Le journal indique: miFOG1WS_7DL88g6d95Uxmzz7GCShsWx_FHuvZkmW0E.eyJpdiI6IjNZZkFBY1c5ZnBaMGEzOWM2RzNKbEEifQ.LNjl06lsOQCO9ArVARqff3Ur2XQHku3CMHDBKkpGg351EB33LGxVv96Hh5R860KDJL0cLq8QezSW0GovYxnhUucOwxlITV364sVKDXIzC3bAn9P_74r2Axl1SgOaTyMMkQ_aSQ2OWh-8d3Zn9BDt3pXVWzBLJ9I4XAosnw0GjuE
Cela semble trop long pour être un jeton d'accès. J'ai lu que c'était censé ne faire que 40 caractères. Qu'est-ce que je fais mal?
Vous pouvez utiliser la méthode déléguée:
- (void)fbDialogLogin:(NSString *)token expirationDate:(NSDate *)expirationDate
pour plus d'informations, vous pouvez vous référer à la question suivante: Jeton d'accès Facebook
Utilisation de la v3.2.1 à compter du 20 mars 2013 du SDK de Facebook.
NSString *fbAccessToken = [[[FBSession activeSession] accessTokenData] accessToken];
Si vous préférez la syntaxe à points,
NSString *fbAccessToken = [FBSession activeSession].accessTokenData.accessToken;
Pour ceux qui utilisent Swift;
var fbAccessToken = FBSession.activeSession().accessTokenData.accessToken
Mise à jour pour v4.1.0 SDK
Objectif c
NSString *fbAccessToken = [FBSDKAccessToken currentAccessToken].tokenString;
Rapide
var fbAccessToken = FBSDKAccessToken.currentAccessToken().tokenString
Si vous utilisez le SDK de Facebook, vous pouvez utiliser l'objet FBSession
pour obtenir et accessToken . Si l'utilisateur s'est authentifié auprès de l'application et que vous avez une session active, utilisez:
NSString * accessToken = [[FBSession activeSession] accessToken];
pour obtenir le jeton d'accès.
Cela a fonctionné pour moi.
Pour SDK 4.0
NSString *fbAccessToken = [[FBSDKAccessToken currentAccessToken] tokenString];
Pour Swift 1.2 et 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];
}
}];
}
Consultez le code ci-dessous pour obtenir le code d'accès à 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
Pour les personnes devant utiliser Swift avec SDK 3.2.1:
let token = FBSession.activeSession().accessTokenData.accessToken