6

Chcę sprawdzić, czy użytkownik jest zalogowany czy nie w głównej FragmentActivity ale mimo że użytkownik jest zalogowany wJak zdobyć bieżący token dostępu w systemie Android Android SDK V4?

AccessToken.getCurrentAccessToken()

zwraca null. Co robimy źle w poniższym kodzie?

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

wszelkie rozwiązania lub obejścia w tej sprawie? Mam ten sam problem ... :( – Sebi

Odpowiedz

0

Czy zadzwoniłeś do zestawu SDK Facebooka onActivityResult() ze swojej aktywności? Napotkano również ten sam problem i rozwiązano go, dodając to wywołanie zwrotne onActivityResult().

+0

Tak, nazwałem 'onActivityResult', ale nadal otrzymuję wartość null dla' AccessToken.getCurrentAccessToken() ' –

2

W jaki sposób użytkownik loguje się za pomocą przycisku LoginButton? Jeśli tak, stanie się to po kliknięciu przycisku logowania, więc sprawdzanie jest za wcześnie.

Jeśli już się zalogowano, token dostępu zostanie zsynchronizowany z dysku, jednak jest to operacja asynchroniczna, więc wątek interfejsu użytkownika nie jest blokowany. Sprawdzasz go zaraz po zainicjowaniu Sdk, a operacja asynchronizacji prawdopodobnie jeszcze się nie zakończyła. Sugeruję użycie AccessTokenTracker do odpowiedzi po załadowaniu AccessToken. Oto przykład, który używa AccessTokenTracker w celach referencyjnych: https://github.com/facebook/facebook-android-sdk/blob/b384c0655fe96db71229bfdcb981a522f3f1e675/samples/Scrumptious/src/com/facebook/scrumptious/usersettings/UserSettingsFragment.java#L75

+0

Cześć Gokhan, to nie działa dla mnie, zobacz http://stackoverflow.com/questions/30379616/how-to-get-current-facebook-access-token-on-app-start –

1

Android Facebook sdk Inicjalizacja zajmuje trochę czasu Zainicjuj. więc trzeba czekać zaledwie 100 milisekund przed wywołaniem AccessToken.getCurrentAccessToken()

raz spróbować tego rozwiązania jest pracy dla mnie

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); 

} 
Powiązane problemy