Der Titel sagt alles. Ich verwende eine benutzerdefinierte Schaltfläche, um die Facebook-Informationen des Benutzers abzurufen (für "Anmeldezwecke"). Ich möchte jedoch nicht, dass sich die App an den zuletzt registrierten Benutzer erinnert, noch an die aktuell über die native Facebook-App angemeldete Person. Ich möchte, dass die Facebook-Anmeldeaktivität jedes Mal angezeigt wird. Aus diesem Grund möchte ich frühere Benutzer programmgesteuert abmelden.
Wie kann ich das machen? So mache ich das Login:
private void signInWithFacebook() {
SessionTracker sessionTracker = new SessionTracker(getBaseContext(), new StatusCallback()
{
@Override
public void call(Session session, SessionState state, Exception exception) {
}
}, null, false);
String applicationId = Utility.getMetadataApplicationId(getBaseContext());
mCurrentSession = sessionTracker.getSession();
if (mCurrentSession == null || mCurrentSession.getState().isClosed()) {
sessionTracker.setSession(null);
Session session = new Session.Builder(getBaseContext()).setApplicationId(applicationId).build();
Session.setActiveSession(session);
mCurrentSession = session;
}
if (!mCurrentSession.isOpened()) {
Session.OpenRequest openRequest = null;
openRequest = new Session.OpenRequest(RegisterActivity.this);
if (openRequest != null) {
openRequest.setPermissions(null);
openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);
mCurrentSession.openForRead(openRequest);
}
}else {
Request.executeMeRequestAsync(mCurrentSession, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
fillProfileWithFacebook( user );
}
});
}
}
Idealerweise würde ich zu Beginn dieser Methode einen Aufruf tätigen, um frühere Benutzer abzumelden.
quelle
Diese Methode hilft Ihnen, sich programmgesteuert von Facebook in Android abzumelden
quelle
else
Teil?Seit dem Android SDK v4.0 von Facebook (siehe Änderungsprotokoll ) müssen Sie Folgendes ausführen:
quelle
Hier ist ein Ausschnitt, mit dem ich mich programmgesteuert von Facebook abmelden konnte. Lassen Sie mich wissen, wenn Sie etwas sehen, das ich möglicherweise verbessern muss.
quelle
Seit dem Android SDK v4.0 von Facebook müssen Sie Folgendes ausführen:
Das reicht nicht aus. Dies wird einfach im Cache gespeicherten Zugriffstoken löschen und Profile , so dass
AccessToken.getCurrentAccessToken()
undProfile.getCurrentProfile()
wird nun geworden null.Um sich vollständig abzumelden, müssen Sie die Berechtigungen widerrufen und dann anrufen
LoginManager.getInstance().logOut();
. Um die Berechtigung zu widerrufen, führen Sie die folgende Diagramm-API aus:quelle
LoginManager.getInstance().logOut();
löscht nur den lokalen Cache, während derGraphRequest
Anruf den App-Zugriff vom Facebook-Konto des Benutzers programmgesteuert widerruft. Beides ist notwendig. Weder ist genug allein.Die Sitzungsklasse wurde in SDK 4.0 entfernt. Das Login-Management erfolgt über die Klasse LoginManager . So:
In der Referenz Upgrade auf SDK 4.0 heißt es:
quelle
Ja, wie @luizfelippe erwähnte, wurde die Sitzungsklasse seit SDK 4.0 entfernt. Wir müssen LoginManager verwenden.
Ich habe mir gerade die LoginButton- Klasse zum Abmelden angesehen. Sie machen diese Art von Scheck. Sie melden sich nur ab, wenn accessToken nicht null ist. Ich denke, es ist besser, dies auch in unserem Code zu haben.
quelle
quelle
Facebook bietet zwei Möglichkeiten, sich von einem Konto aus anzumelden und abzumelden. Eine ist die Verwendung von LoginButton und die andere die Verwendung von LoginManager. LoginButton ist nur eine Schaltfläche, mit der beim Anmelden die Anmeldung abgeschlossen wird. Auf der anderen Seite macht LoginManager dies alleine. In Ihrem Fall haben Sie LoginManager verwendet, um sich automatisch abzumelden.
LoginManager.getInstance().logout()
Geht das für dich.quelle