4

私のアプリがiOS6の設定で登録されたFacebookアカウントにアクセスした後、Facebookのプライバシー設定からアプリを取り消しました。次に、[FBSession openActiveSessionWithReadPermissions ...]を呼び出してアプリをFacebookに再接続しようとします。そのメソッドは、許可の付与を再度要求せずに、すでに無効になっている古いアクセストークンを使用してFacebookセッションを作成します。

この問題はこの質問( Facebook SDK 3.1-アクセストークンの検証エラー)と関係があると思います。SDK3.1.1で修正されたと言われています。

ただし、SDK 3.1.1を使用しており、無効なアクセストークンエラーが発生するたびにaccountStore renewCredentialsForAccountを手動で呼び出すことで、この問題を回避しています。

4

1 に答える 1

5

このスレッドに基づいて、有効なセッションを検証する唯一の方法は、単純なグラフ API 呼び出しを実行することでした。エラーが発生した場合はFBSession.activeSession.isOpenが返されますNO。これは、トークンの有効期限が切れたことを示す適切な指標です。

+ (void) ValidateSession
{    
    FBRequest *userDetails = [[FBRequest alloc] initWithSession:FBSession.activeSession graphPath:@"/me"];
    [userDetails startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary *result, NSError *error) {

        if (error) {
            if (FBSession.activeSession.isOpen) {
                // Less probable, so check error code.
            } else {
                // Bingo: here we know for sure that the token was useless.
                // Expected behavior: reauthorize.
            }
        } else if (result) {
            NSLog(@"%@", result);
            // token is valid, continue
        }

    }];
}

アプリが削除された後も iOS は Facebook トークンを保持しているようです。そのため、必要なときにいつでもトークンが有効であることを再確認することをお勧めします。

于 2013-01-21T21:18:47.173 に答える