6

Voglio verificare se l'utente è loggato o meno all'interno della FragmentActivity principale, ma anche se l'utente è connessoCome ottenere il token di accesso corrente in Facebook Android SDK V4?

AccessToken.getCurrentAccessToken()

restituisce null. Cosa sto facendo male nel codice qui sotto?

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    context = this;   
    FacebookSdk.sdkInitialize(context); 
    callbackManager = CallbackManager.Factory.create(); 
    AccessToken accessToken = AccessToken.getCurrentAccessToken(); 
    if (accessToken != null) { 
     if (!accessToken.isExpired()) { 

     } 
    } 
} 
+0

qualsiasi soluzione o soluzione a questo? Ho lo stesso problema ... :( – Sebi

risposta

0

hai chiamato del onActivityResult() dalla vostra attività del Facebook SDK? Ho riscontrato anche lo stesso problema e ho risolto aggiungendo questa callback onActivityResult().

+0

Sì, ho chiamato 'onActivityResult', ma sto ancora ottenendo valore null per' AccessToken.getCurrentAccessToken() ' –

2

Come si accede l'utente tramite il pulsante Login? Se è così, accadrà dopo aver fatto clic sul pulsante di accesso, quindi dove stai controllando è troppo presto.

Se hanno già effettuato l'accesso, il token di accesso verrà deserializzato dal disco, tuttavia si tratta di un'operazione asincrona in modo che il thread dell'interfaccia utente non sia bloccato. Lo controlli subito dopo l'inizializzazione di Sdk e probabilmente l'operazione asincrona non è ancora completata. Suggerisco di utilizzare AccessTokenTracker per rispondere quando viene caricato AccessToken. Ecco un esempio che utilizza AccessTokenTracker come riferimento: https://github.com/facebook/facebook-android-sdk/blob/b384c0655fe96db71229bfdcb981a522f3f1e675/samples/Scrumptious/src/com/facebook/scrumptious/usersettings/UserSettingsFragment.java#L75

+0

Ciao Gokhan, questo non funziona per me, vedi http://stackoverflow.com/questions/30379616/how-to-get-current-facebook-access-token-on-app-start –

1

Android Facebook sdk L'inizializzazione richiede un po 'di tempo Inizializzazione. quindi è necessario aspettare a soli 100 millesimi di secondo prima di chiamare AccessToken.getCurrentAccessToken()

una volta provare questa soluzione si sta lavorando per me

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    context = this; 
    FacebookSdk.sdkInitialize(context); 

    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 

      callbackManager = CallbackManager.Factory.create(); 
      AccessToken accessToken = AccessToken.getCurrentAccessToken(); 
      if (accessToken != null) { 
       if (!accessToken.isExpired()) { 

       } 
      } 

     } 
    }, 100); 

} 
Problemi correlati