web-dev-qa-db-fra.com

Facebook SDK 4 pour Android - comment se déconnecter par programmation

Récemment, Facebook a sorti le SDK 4 avec de nouvelles mises à jour. J'ai essayé de passer au SDK4 pour utiliser de nouvelles fonctionnalités. Cependant, je me bats avec la fonctionnalité de connexion de Facebook.

Jusqu'à présent, pour me déconnecter de Facebook par programmation, j'ai utilisé:

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

Mais SDK4 ne semble plus supporter Session, et dans la documentation officielle, ils mentionnent:

Il existe deux manières d'implémenter la connexion Facebook sur Android:

LoginButton class - Ce qui fournit un bouton que vous pouvez ajouter à votre interface utilisateur. Il suit le jeton d'accès actuel et peut connecter et déconnecter des personnes.

Eh bien, il semble qu’il n’y ait aucun moyen de se déconnecter de Facebook par programme, à l’aide de LoginButton. Quelqu'un a une idée, s'il vous plaît partagez-le ici.

102
franco phong

Vous pouvez utiliser LoginManager.getInstance().logOut();, même si vous utilisez LoginButton car

Cet élément d'interface utilisateur recouvre la fonctionnalité disponible dans le LoginManager.

EDIT: Juste pour mentionner que cela fonctionne pour Facebook SDK v4 . Je ne sais pas s'ils vont le changer à l'avenir.

Comme mentionné par batoutofhell, n'oubliez pas de mettre FacebookSdk.sdkInitialize(getApplicationContext()); pour initialiser le sdk de facebook. S'il vous plaît voir ici pour les détails.

261
stackex

SDK4, si vous souhaitez dissocier complètement le couple, veillez également à supprimer l'application du compte facebook de l'utilisateur. Cette méthode déconnecte complètement l'utilisateur:

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();
}
60
Frank
9
Chris Pan

Pour le gérer avec le 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

Vous pouvez vous déconnecter à l'aide de LoginManager, mais vous devez également utiliser la demande de graphique. Je parle de vous déconnecter complètement pour que, la prochaine fois, vous puissiez vous connecter avec un compte différent.

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();

À l'aide des préférences partagées, vous pouvez vous déconnecter complètement et la prochaine fois, vous pourrez vous connecter avec un compte différent.

3
Ritesh Jha