web-dev-qa-db-ja.com

Facebook SDK 4 for Android-プログラムからログアウトする方法

最近、FacebookはSDK 4をリリースし、新しくてクールな更新を加えました。 SDK4に切り替えて新機能を使用しようとしましたが、Facebookのログイン機能に苦労しています。

これまでのところ、Facebookをプログラムでログアウトするには、次を使用しました。

Session session = Session.getActiveSession();
session.closeAndClearTokenInformation();

ただし、SDK4はSessionをサポートしていないようです。公式ドキュメントでは次のように言及しています。

AndroidにFacebookログインを実装するには、2つの方法があります。

LoginButtonクラス-UIに追加できるボタンを提供します。現在のアクセストークンに従い、ユーザーをログインおよびログアウトできます。

まあ、LoginButtonを使用しない限り、プログラムでFacebookからログアウトする方法はないようです。誰でもアイデアがあります。ここで共有してください。

102
franco phong

LoginButtonを使用する場合でも、LoginManager.getInstance().logOut();を使用できます。

このUI要素は、LoginManagerで使用可能な機能をラップします。

EDIT:これはFacebook SDK v4で機能することを言及するだけです。彼らが将来それを変えるかどうかはわかりません。

@batoutofhellの言及として、facebook sdkを初期化するためにFacebookSdk.sdkInitialize(getApplicationContext());を置くことを忘れないでください。詳細については here をご覧ください。

259
stackex

SDK4では、完全に分離する場合は、ユーザーのFacebookアカウントからアプリも削除するようにしてください。このメソッドは、ユーザーを完全に切断します。

public void disconnectFromFacebook() {

    if (AccessToken.getCurrentAccessToken() == null) {
        return; // already logged out
    }

    new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/permissions/", null, HttpMethod.DELETE, new GraphRequest
            .Callback() {
        @Override
        public void onCompleted(GraphResponse graphResponse) {

            LoginManager.getInstance().logOut();

        }
    }).executeAsync();
}
59
Frank

LoginManager.logOut()を使用できます

チェックアウト https://developers.facebook.com/docs/reference/Android/current/class/LoginManager/

9
Chris Pan

LoginButtonで処理するには:

//Check if user is currently logged in
        if (AccessToken.getCurrentAccessToken() != null && com.facebook.Profile.getCurrentProfile() != null){
            //Logged in so show the login button
            fbLogin.setVisibility(View.VISIBLE);
            fbLogin.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
//log out
                    LoginManager.getInstance().logOut();
                    gotoLogin();
                }
            });
        }
7
surfer190

LoginManagerを使用してログアウトできますが、グラフリクエストも使用する必要があります。私は完全にログアウトするので、次回は別のアカウントでログインできます。

new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/permissions/", null, HttpMethod.DELETE, new GraphRequest
            .Callback() {
        @Override
        public void onCompleted(GraphResponse graphResponse) {

            SharedPreferences pref = DashBoard.this.getPreferences(Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = pref.edit();
            editor.clear();
            editor.commit();
            LoginManager.getInstance().logOut();

            Intent logoutint = new Intent(DashBoard.this,MainActivity.class);
            logoutint.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
               startActivity(logoutint);

        }
    }).executeAsync();

ここで設定を共有すると、完全にログアウトでき、次回は別のアカウントでログインできます。

3
Ritesh Jha