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 Access Token
Facebook SDKの2013年3月20日現在の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以降のアップデート
Objective-C
NSString *fbAccessToken = [FBSDKAccessToken currentAccessToken].tokenString;
Swift
var fbAccessToken = FBSDKAccessToken.currentAccessToken().tokenString
Facebook SDKを使用している場合は、FBSession
オブジェクトを使用して、getおよびaccessTokenを取得できます。ユーザーがアプリに認証され、アクティブなセッションを使用している場合:
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];
}
}];
}
ACAccountStoreからaccess_tokenを取得するには、以下のコードを確認してください。
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でSwiftを使用する必要がある場合:
let token = FBSession.activeSession().accessTokenData.accessToken