3

最新の Facebook SDK (3.1.1) を使用しています。

AppDelegate現在のセッションをチェックし、状態に応じてセッションを作成または開く関数を my に書きました。

2 番目の条件は常に返さNOれ、ログイン画面が表示されます。

道がわかりません。

AppDelegate メソッド:

if (facebook.isOpen == NO)
{
   facebook = [[FBSession alloc] initWithPermissions:permission];

    if (facebook.state == FBSessionStateCreatedTokenLoaded)
    {
        [facebook openWithCompletionHandler:^(FBSession *session,FBSessionState status,NSError *error)
        {
            // load user details
        }];
    }
    else
    {
        // show login screen
    }
}
4

2 に答える 2

1

FbSession クラスにはプロパティ アクセス トークンがあります。

ログイン ステータスを確認するには、その文字列を使用します。

その文字列でnullを取得している場合は、セッションの有効期限が切れていることを意味しますが、値を取得している場合は、まだアプリにログインしていて、好きなことをすることができます.

よろしく

アビシェーク・ゴヤル

于 2013-01-01T09:36:07.087 に答える
0

セッション状態が FBSessionStateCreatedTokenLoaded に等しい場合、キャッシュされた accessToken があることを意味し、open* を呼び出すと、UX やアプリ切り替えなしでセッションが開かれます。

-(BOOL)validFBSessionExists{
        if (FBSession.activeSession.isOpen){
            NSLog(@"Facebook accessToken:%@",FBSession.activeSession.accessTokenData.accessToken);
            return YES;
        }
        else if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded)
        {
            // Cached token exist, Session needs to be re-opened
            [FBSession.activeSession openWithBehavior:FBSessionLoginBehaviorUseSystemAccountIfPresent completionHandler:nil];
            return YES;
        }
        return NO;
}
于 2014-07-04T16:09:13.260 に答える