Procédure de programmation pour vous déconnecter de Facebook SDK 3.0 sans l'aide de Facebook bouton connexion/déconnexion?
Le titre dit tout. Je suis à l'aide d'un bouton personnalisé pour récupérer l'utilisateur de facebook de l'information (pour "signer" à des fins). Pourtant, je ne veux pas l'application de rappeler le dernier utilisateur inscrit, ni actuellement connecté en personne via Facebook application native. Je veux le Facebook de l'activité de connexion de pop-up à chaque fois. C'est pourquoi je tiens à vous déconnecter tous les utilisateurs des versions précédentes de la programmation.
Comment puis-je le faire? C'est de cette façon je ne le 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 );
}
});
}
}
Idéalement, je voudrais faire un appel au début de cette méthode pour vous déconnecter de tous les précédents utilisateurs.
Vous devez vous connecter pour publier un commentaire.
Mise à jour pour la dernière version de SDK:
Maintenant @zeuter réponse est bonne pour Facebook SDK v4.7+:
Réponse originale à cette question:
S'il vous plaît ne pas utiliser SessionTracker. C'est un interne (colis privé) de la classe, et n'est pas destiné à être consommé dans le cadre de l'API publique. En tant que tel, son API peuvent changer à tout moment sans rétro-compatibilité des garanties. Vous devriez être en mesure de se débarrasser de toutes les instances de SessionTracker dans votre code, et il suffit d'utiliser la session active à la place.
Pour répondre à votre question, si vous ne voulez pas conserver les données de la session, il suffit d'appeler closeAndClearTokenInformation lorsque votre application se ferme.
Cette méthode vous aidera à vous déconnecter de facebook par programmation dans android
else
partie?Depuis Facebook du SDK Android v4.0 (voir changelog), vous devez exécuter les opérations suivantes:
Ici est extrait de code qui m'a permis de déconnecter par programme à partir de facebook. Laissez-moi savoir si vous voyez quelque chose que je pourrais avoir besoin pour améliorer.
Depuis Facebook du SDK Android v4.0, vous devez exécuter les opérations suivantes:
Ce n'est pas suffisant. Ce sera tout simplement effacer le cache jeton d'accès et de profil afin que
AccessToken.getCurrentAccessToken()
etProfile.getCurrentProfile()
va maintenant devenir nulle.Complètement déconnexion, vous devez révoquer des autorisations et ensuite appeler
LoginManager.getInstance().logOut();
. De révoquer l'autorisation d'exécuter le graphique suivant API -LoginManager.getInstance().logOut();
n'efface le cache local, tandis que leGraphRequest
appel par programme révoque l'application d'accès de l'utilisateur Facebook compte. les Deux sont nécessaires. Il n'est ni assez seul.Session classe a été supprimée sur SDK 4.0. Le login de la prise en charge se fait par le biais de la classe LoginManager. Donc:
Comme la référence La mise à niveau vers SDK 4.0 dit:
Yup, Comme @luizfelippe mentionné Session classe a été supprimé depuis SDK 4.0. Nous avons besoin d'utiliser LoginManager.
Je viens de regarder dans LoginButton classe pour vous déconnecter. Ils font ce genre de vérification. Ils se déconnecte seulement si accessToken n'est pas nulle. Donc, je pense que c'est mieux d'en avoir dans notre code de trop..
Facebook propose deux moyens de connexion et de la déconnexion d'un compte. La première consiste à utiliser LoginButton et l'autre est d'utiliser LoginManager. LoginButton est juste un bouton qui à cliqué, l'enregistrement est réalisé. De l'autre côté LoginManager ne ce sur son propre. Dans votre cas, vous devez utiliser LoginManager de déconnexion automatique.
LoginManager.getInstance().logout()
fait ce travail pour vous.