3

Android アプリでユーザーのフレンド リストを取得しようとしています。そうするために私は使用しています: facebook-android-sdk-3.0.1

SDKには独自のログイン/ログアウトボタンが付属しているので、それを使用しました。ログインをクリックすると、イベントが処理されます(ログイン画面を呼び出すと許可が求められます)ので、何もする必要はありません。ログイン直後、 A_class extends Fragment内にあるonSessionStateChange関数が呼び出される

private void onSessionStateChange(Session session, SessionState state, Exception exception) {
        if (state.isOpened()) {             // Session open
            getFriends();                   // Call FQL codes...
        } else if (state.isClosed()) {      // Session closed
            // After first login, It always coming here.Couse:Invalid access token.
        }
    }

チュートリアルに従いました。ログイン > 基本的な権限を尋ねる > (FQL を使用して) フレンド リストを取得する > ログアウトすることができました。

最初のログインと認証に成功した後、アプリからログアウト/終了すると、再度ログインできません。SDK のfinishAuthorizationでは、 Invalid access token exceptionが返され、セッションを開くことができません。

ブラウザで Facebook アカウントにログインし、アカウントで Facebook アプリケーションの認証を解除すると、再度ログインして友達を取得できます。アクセストークンか何かを更新する必要があるようです...ご提案ありがとうございます。

トークンが空の文字列 "" を返していることがわかりました。

4

3 に答える 3

0

ログアウト後に再認証を試みますか? トークンの有効期限が切れている可能性があります。私のアプリでは、ログアウトはしません。トークンは有効期限が切れるまで有効です。その場合は、再度ログインします:)。

于 2013-05-31T13:14:48.327 に答える
0

最初に、 https://developers.facebook.com/tools/debug/access_tokenの Facebook デバッグ ツールでアクセス トークンが利用可能かどうかを確認します。このツールは、提供されたアクセス トークンに関する情報を提供しTime to ExpireますScopes

トークンの有効期限が切れている場合は、グラフ API を使用して更新 (再承認) する必要があります。

https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=app-id&client_secret=app-secret&fb_exchange_token=old_token

old_tokenURL を期限切れのアクセス トークンに置き換えて、 app_idandsecretの代わりにclient_idand をclient_secretそれぞれ使用します。戻り値は、古いトークンの代わりに使用できる新しいトークンです。

無効なアクセス トークンの例外が発生した時点でアクセス トークンを更新し、ログインする前に置き換えることができます。

于 2013-06-02T15:02:12.450 に答える