Comment obtenir de l'actuel Facebook jeton d'accès sur l'app commencer?

Sur l'app commencer j'ai besoin de savoir si l'utilisateur est connecté ou pas à afficher une page de connexion ou pas.

Mon premier essai a été d'appeler AccessToken.getCurrentAccessToken(), mais cela ne fonctionne pas, voir https://stackoverflow.com/a/29854249/1016472

Mon 2ème essai a été d'utiliser le AccessTokenTracker mais cela ne fonctionne pas trop. Pour utiliser le AccessTokenTracker je dois initialiser le Facebook SDK d'abord. Mais au cours de cette initialisation, le jeton d'accès est de l'envoyer sur le tracker. Le tracker n'est pas créé à cette époque et ne peuvent pas recevoir le jeton.

Mon 3ème essai était de créer ma propre AccessTokenTracker qui ressemble à celui d'origine. J'ai créé et enregistré avant j'initialise le SDK. Et maintenant, mon tracker obtenir le jeton lors de ce SDK processus d'initialisation.

Avec cette connaissance, j'ai ouvert un rapport de bug sur Facebook avec les questions:

  • Pourquoi le AccessTokenTracker dépend de la initialisée SDK. Je pense
    c'est une erreur.
  • Quelle est la bonne façon de voir si un utilisateur est connecté
    ou pas sur l'app démarrer.

La réponse de Facebook:

Ça ne ressemble pas à un bug. Le AccessTokenTracker
::onCurrentAccessTokenChanged devrait vous permettre de savoir quand la classe a
reçu un jeton.

Je sais que ce n'est pas de travail. Et maintenant, je sais il n'y a pas de bug.

Mais comment résoudre mon problème?

Cela ne fonctionne pas:

FacebookSdk.sdkInitialize(getApplicationContext());
mAccessTokenTracker = new AccessTokenTracker() {

    @Override
    protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) {

        Timber.i("AccessTokenTracker oldAccessToken: " + oldAccessToken + " - currentAccessToken: " + currentAccessToken);
    }
};

OriginalL'auteur Ralph Bergmann | 2015-05-21