0

一部のゲームは Facebook SDK を使用してゲームにログインしていることに気付きました。初めてログインすると、ログインフォームが表示され、アプリに移動します。ログアウトして再度ログインすると、Facebook のログイン フォームが表示されなくなります。別の Facebook アカウントでログインするには、Facebook アプリを使用する必要があります。なんで?ゲームのログアウト ボタンで Facebook もログアウトしないのはなぜですか? それは正しいメカニズムですか?

4

2 に答える 2

2

ログアウトには以下のコードを使用します。

private void logout(Facebook facebook) {
    AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);
    mAsyncRunner.logout(getBaseContext(), new RequestListener() {
        @Override
        public void onComplete(String response, Object state) {
            Log.i("System out", "Logout:onComplete:res:state " + response
                    + ":" + state);
            new LoginData(SettingsActivity.this).clearFacebookDataInPref();
            handler.sendEmptyMessage(1);
        }

        @Override
        public void onIOException(IOException e, Object state) {
            Log.i("System out", "Logout:state" + ":" + state);
            e.printStackTrace();
            exceptionMessage = e.getMessage();
            handler.sendEmptyMessage(2);
        }

        @Override
        public void onFileNotFoundException(FileNotFoundException e,
                Object state) {
            Log.i("System out", "Logout:OnFileNotFoundExce:state:" + state);
            e.printStackTrace();
            exceptionMessage = e.getMessage();
            handler.sendEmptyMessage(2);
        }

        @Override
        public void onMalformedURLException(MalformedURLException e,
                Object state) {
            Log.i("System out", "Logout:MalformedURLExce:state:" + state);
            e.printStackTrace();
            exceptionMessage = e.getMessage();
            handler.sendEmptyMessage(2);
        }

        @Override
        public void onFacebookError(FacebookError e, Object state) {
            Log.i("System out", "Logout:onFacebookError:state" + state);
            e.printStackTrace();
            exceptionMessage = e.getMessage();
            handler.sendEmptyMessage(2);
        }
    });
}

アクセス トークンを保存し、共有設定で有効期限が切れる場合は、onComplete リスナーで削除/クリアします。

于 2012-08-01T05:36:15.023 に答える
2

Facebook SDK によって提供される Facebook.java を開くと、次のような変更がありました。

public void authorize(Activity activity, String[] permissions,
            int activityCode, final DialogListener listener) {

        boolean singleSignOnStarted = false;

        mAuthDialogListener = listener;

      /*  // Prefer single sign-on, where available.
        if (activityCode >= 0) {
            singleSignOnStarted = startSingleSignOn(activity, mAppId,
                    permissions, activityCode);
        }
        // Otherwise fall back to traditional dialog.
        if (!singleSignOnStarted) {*/
            startDialogAuth(activity, permissions);
       // }
    }
于 2012-08-01T04:40:46.277 に答える