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.
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.
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();
}
Vous pouvez utiliser LoginManager.logOut()
Départ https://developers.facebook.com/docs/reference/Android/current/class/LoginManager/
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();
}
});
}
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.