6

Ich möchte überprüfen, ob der Benutzer angemeldet ist oder nicht innerhalb des Haupt FragmentActivity aber obwohl der Benutzer inWie erhalten Sie aktuelle Zugriffstoken in Facebook Android SDK V4?

AccessToken.getCurrentAccessToken()

kehrt null angemeldet ist. Was mache ich falsch im unten stehenden Code?

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

jede Lösung oder Abhilfe dazu? Ich habe das gleiche Problem ... :( – Sebi

Antwort

0

Haben Sie die Facebook SDK onActivityResult() aus Ihrer Aktivität aufgerufen? Ich stieß auch auf das gleiche Problem und löste diese onActivityResult() Callback.

+0

Ja, ich habe 'OnActivityResult' aufgerufen, aber ich bekomme immer noch Null-Wert für 'AccessToken.getCurrentAccessToken()' –

2

Wie meldet sich der Benutzer über den LoginButton an? Wenn dies der Fall ist, geschieht dies nach dem Klicken auf den Login-Button. Daher ist es zu früh, wo Sie nachsehen.

Wenn sie sich bereits angemeldet haben, wird das Zugriffstoken von der Festplatte deserialisiert. Dies ist jedoch eine asynchrone Operation, sodass der UI-Thread nicht blockiert wird. Sie überprüfen es direkt nach dem Initialisieren des Sdk, und der asynchrone Vorgang ist wahrscheinlich noch nicht abgeschlossen. Ich schlage vor, dass Sie den AccessTokenTracker verwenden, um zu reagieren, wenn das AccessToken geladen wird. Hier ist ein Beispiel, das den AccessTokenTracker als Referenz verwendet: https://github.com/facebook/facebook-android-sdk/blob/b384c0655fe96db71229bfdcb981a522f3f1e675/samples/Scrumptious/src/com/facebook/scrumptious/usersettings/UserSettingsFragment.java#L75

+0

Hallo Gokhan, das funktioniert nicht für mich, siehe http://stackoverflow.com/questions/30379616/how-to-get-current-facebook-access-token-on-app-start –

1

Android Facebook sdk Initialisierung dauert einige Zeit Initialisieren. so müssen Sie nur 100 Millisekunden warten, bevor AccessToken.getCurrentAccessToken() aufrufen

einmal diese Lösung versuchen, es ist für mich arbeiten

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

}