3

Facebook セッションが有効かどうかを確認しようとしていますが、次の理由で発生する可能性があります。

  1. セッションの有効期限が切れました。
  2. ユーザーがログオフしました。
  3. ユーザーが私の Facebook アプリケーションを削除しました。
  4. ユーザーは存在しません。

ユーザーがまだログインしているかどうかを確認するには、次の方法があります。

public boolean isLoggedIn() {
    Session session = Session.getActiveSession();
    if (session != null && session.isOpened()) {
        return true;
    } else {
        return false;
    }
}

ただし、ユーザーが自分の Facebook アカウントからアプリを削除した場合でも true を返します。

Facebook リクエストを呼び出すと、Facebook から次の応答が返されます。

08-14 12:20:40.671: I/facebookActivity(2322): Result: {Response:  responseCode: 400, graphObject: null, error: {HttpStatus: 400, errorCode: 190, errorType: OAuthException, errorMessage: Error validating access token: User 343343434 has not authorized application 45345345.}, isFromCache:false}

その後、Facebookにリクエストするたびに、異なる応答が返されます:

08-14 12:21:09.707: I/facebookActivity(2322): Result: {Response:  responseCode: 200, graphObject: null, error: {HttpStatus: -1, errorCode: -1, errorType: null, errorMessage: null}, isFromCache:false}

JSON でエラーを確認し、新しい Facebook セッションを作成しようとすることはできますが、Facebook リクエストを行う前にそうしないようにするか、アクティビティがセッションが有効かどうかを確認するために少なくとも 1 回呼び出します。

セッションが有効かどうかを確認する通常の方法はありますか?

4

1 に答える 1

4

キャッシュされた情報からセッションを開くと (通常は自動的に行われます)、Facebook に対してサーバー要求が行われることはありません。そのため、Session オブジェクト自体は、それがまだ有効かどうかわかりません。

アクセス トークンが (何らかの理由で) 無効化されたことを知る唯一の方法は、グラフ リクエストを行うことです。新しいセッション (/me または /me/permissions に対して) を開くたびにグラフ リクエストを行うか、アプリを通常どおりに進めて、エラーが発生したときにここで概説されているエラー処理手順を実行することができます (注:セッション/アクセストークンは、アプリの実行中でもいつでも無効になる可能性があるため、適切なエラー処理が必要です)。

于 2013-08-14T16:18:32.547 に答える