Comment se déconnecter par programmation de Facebook SDK 3.0 sans utiliser le bouton de connexion / déconnexion de Facebook?

Le titre dit tout. J’utilise un bouton personnalisé pour récupérer les informations Facebook de l’utilisateur (à des fins d’inscription). Cependant, je ne veux pas que l’application se souvienne du dernier utilisateur enregistré, ni de la personne actuellement connectée via l’application native de Facebook. Je souhaite que l’activité de connexion Facebook apparaisse à chaque fois. C’est pourquoi je veux déconnecter tous les utilisateurs précédents par programmation.

Comment puis je faire ça? Voici comment je fais la connexion:

private void signInWithFacebook() { SessionTracker sessionTracker = new SessionTracker(getBaseContext(), new StatusCallback() { @Override public void call(Session session, SessionState state, Exception exception) { } }, null, false); Ssortingng 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 ferais un appel au début de cette méthode pour déconnecter les utilisateurs précédents.

Mise à jour du dernier SDK:

Maintenant, la réponse de @zeuter est correcte pour Facebook SDK v4.7 +:

LoginManager.getInstance().logOut();

Réponse originale:

Veuillez ne pas utiliser SessionTracker. Il s’agit d’une classe interne (package privé), qui n’est pas destinée à être utilisée dans le cadre de l’API publique. En tant que tel, son API peut changer à tout moment sans garantie de compatibilité ascendante. Vous devriez être capable de vous débarrasser de toutes les instances de SessionTracker dans votre code, et utiliser simplement la session active à la place.

Pour répondre à votre question, si vous ne souhaitez conserver aucune donnée de session, appelez simplement closeAndClearTokenInformation lorsque votre application se ferme.

Cette méthode vous aidera à vous déconnecter de Facebook par programmation dans Android

 /** * Logout From Facebook */ public static void callFacebookLogout(Context context) { Session session = Session.getActiveSession(); if (session != null) { if (!session.isClosed()) { session.closeAndClearTokenInformation(); //clear your preferences if saved } } else { session = new Session(context); Session.setActiveSession(session); session.closeAndClearTokenInformation(); //clear your preferences if saved } } 

Depuis le SDK Android v4.0 de Facebook (voir journal des modifications ), vous devez exécuter les opérations suivantes:

 LoginManager.getInstance().logOut();