wake-up-neo.net

Facebook SDK 4 für Android - wie man sich programmatisch abmeldet

Vor kurzem hat Facebook das SDK 4 mit neuen und coolen Updates veröffentlicht. Ich habe versucht, in SDK4 zu wechseln, um die neuen Funktionen zu nutzen, habe jedoch Probleme mit der Anmeldefunktion von Facebook.

Bisher habe ich zum programmgesteuerten Abmelden von Facebook Folgendes verwendet:

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

Aber SDK4 scheint Session nicht mehr zu unterstützen und in offiziellen Dokumenten wird Folgendes erwähnt:

Es gibt zwei Möglichkeiten, um die Facebook-Anmeldung auf Android zu implementieren:

LoginButton-Klasse - Diese Klasse bietet eine Schaltfläche, die Sie zu Ihrer Benutzeroberfläche hinzufügen können. Es folgt dem aktuellen Zugriffstoken und kann Personen ein- und ausloggen.

Nun, es scheint keine Möglichkeit zu geben, sich programmgesteuert von Facebook abzumelden, außer mit LoginButton. Wenn Sie eine Idee haben, teilen Sie diese bitte hier mit.

102
franco phong

Sie können LoginManager.getInstance().logOut(); verwenden, auch wenn Sie LoginButton verwenden, weil

Dieses UI-Element umschließt die im LoginManager verfügbaren Funktionen.

EDIT: Nur um zu erwähnen, dass dies für Facebook SDK v4 funktioniert . Ich weiß nicht, ob sie es in Zukunft ändern werden.

@als batoutofhell erwähnen, vergessen Sie nicht, FacebookSdk.sdkInitialize(getApplicationContext()); zu setzen, um das facebook sdk zu initialisieren. Bitte lesen Sie hier für Details.

261
stackex

Wenn Sie SDK4 vollständig entkoppeln möchten, stellen Sie sicher, dass Sie die App auch aus dem Facebook-Konto des Benutzers entfernen. Diese Methode trennt den Benutzer vollständig:

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

So handhaben Sie es mit dem 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

Sie können sich mit LoginManager abmelden, aber Sie müssen auch die Grafikanforderung verwenden. Ich spreche davon, sich komplett abzumelden, damit Sie sich das nächste Mal mit einem anderen Konto anmelden können.

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

Mithilfe der hier angegebenen gemeinsamen Einstellungen können Sie sich vollständig abmelden und sich beim nächsten Mal mit einem anderen Konto anmelden.

3
Ritesh Jha