0

ユーザーがネイティブ Facebook にログインしている場合、Facebook SDK を使用して FBSession を介してキャッシュされたアクセス トークンをフェッチする方法はありますか。

アプリで Facebook を介して自動ログインを実装しようとしています。つまり、ユーザーがネイティブの Facebook にログインしている場合、アプリはログインを要求してはならず、ユーザーは自動的にログインする必要があります。

FBSession と FBTokenCacheStrategy を使用しましたが、ユーザーは自動的にログインしていますが、API を呼び出す必要があるアクセス トークンを取得できません。これを行うために使用している次のコード:

CacheToken = [[FBTokenCache alloc]init];
NSArray *permissions = [[NSArray alloc]initWithObjects:@"email,user_photos,user_videos,publish_stream,offline_access,user_checkins,friends_checkins", nil];


self.fbsession = [[FBSession alloc] initWithAppID:@"484473011575776"
                                              permissions:permissions
                                          urlSchemeSuffix:nil
                                       tokenCacheStrategy:CacheToken];

(fbsession is the object of Facebook SDK class FBSession)
[FBSession setActiveSession:self.fbsession];


[FBSession openActiveSessionWithReadPermissions:permissions
                                                   allowLoginUI:YES
                                              completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
                                                  [self sessionStateChanged:session state:state error:error];

前もって感謝します。

4

2 に答える 2

3

アクセストークンを取得するには、これを使用する必要があります: [FBSession activeSession] accessToken]

ただし、(キャッシュされた)アクセストークンがすでに存在するかどうかを確認したいようです。これを行うには、次のことができます。

// See if we have a valid token for the current state.
if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded) {
    NSLog(@"The value access token is: %@", [[FBSession activeSession] accessToken]);
} else { 
    // No, display the login page.
}

アプリのデリゲートでもこれを行うようにしてください。そうしないと、アクセス トークンが nil になります。

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    return [FBSession.activeSession handleOpenURL:url];
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
// We need to properly handle activation of the application with regards to Facebook Login
    // (e.g., returning from iOS 6.0 Login Dialog or from fast app switching).
    [FBSession.activeSession handleDidBecomeActive];
}

お役に立てれば

于 2013-02-05T06:20:12.907 に答える