2017-09-19 1 views
3

Ich benutze Parse-Server als Back-End in der App. Ich habe die Anforderung, mich mit Facebook als Anmeldeoption anzumelden. Dafür verwende ichFacebook Access Token ist null auf 2. Versuch der Anmeldung mit Facebook mit ParseFacebookUtils

compile 'com.parse:parsefacebookutils-v4-android:[email protected]' 

diesen neuesten Facebook-SDK für Android

compile('com.facebook.android:facebook-android-sdk:4.26.0') { 
     exclude group: 'com.parse.bolts', 
       module: 'bolts-android' 
    } 

Wenn er zum ersten Mal anmelden, nachdem die App mit Facebook Installation alles

private void loginWithFacebook(){ 
     ParseFacebookUtils.logInWithReadPermissionsInBackground(this, Arrays.asList("public_profile", "email", "user_friends"), new LogInCallback() { 
      @Override 
      public void done(ParseUser user, ParseException err) { 
       //.... 
      } 
     }); 
    } 

gut funktioniert kann ich das Zugriffstoken mit anderen Informationen, die ich später in der App für andere Zwecke verwenden kann, aber das Problem beginnt, wenn ich mich auslogge:

Diese Funktion loggt mich korrekt aus, aber nachdem ich mich wieder mit demselben Facebook-Konto angemeldet habe, benutze die selbe Logik für den Login, wenn ich debugge und versuche, das Access Token zu bekommen, was ich nicht verstehen kann, warum es gut funktionieren sollte .

Das Konto, das ich benutze, um sich anzumelden, ist bereits ein Testkonto, das mit der iOS-Version der Anwendung mit demselben Fluss funktioniert, aber nicht in Android.

Lassen Sie mich wissen, wenn ich etwas falsch mache.

+0

Was ist das?: [Facebook SDK 4 für Android - wie programmgesteuert abmelden] (https://stackoverflow.com/a/32476054/8398526) – rweisse

+0

habe auch versucht, facebook komplett von der App https://pastebin.com/TGeYv8BJ zu entkoppeln es funktioniert nicht. Es fordert mich auf, dem FB Berechtigungen zu erteilen, aber das Zugriffstoken ist nach der Anmeldung immer noch null. – KunalK

+0

Was ist der Fehler, den Sie bekommen? –

Antwort

0

Versuchen abzumelden this method mit:

ParseUser.logOut()

public static void logout()

Meldet die derzeit in Benutzersitzung abgemeldet . Dies wird die Sitzung von der Festplatte entfernen, sich von den verknüpften Diensten abmelden, und zukünftige Aufrufe von ParseUser.getCurrentUser() werden null zurückgeben. In der Regel sollten Sie stattdessen ParseUser.logOutInBackground() verwenden, sofern Sie nicht Ihr eigenes Threading verwalten.

Hinweis :: Fehler im Abmeldefluss werden aus Gründen der Abwärtskompatibilität verschluckt. Verwenden Sie ParseUser.logOutInBackground(), wenn Sie sie behandeln möchten.

Ich denke, das Problem tritt auf, weil Sie direkt LoginManager.getInstance verwenden(). Logout() -Methode von Facebook SDK, aber ParseFacebookUtils Caches einige Informationen über vorherige Anmeldung. Versuchen Sie, zu rufen.

ParseUser.getCurrentUser().logOut(); 

BTW, wenn Sie den Code von LoginManager.getInstance Blick in() logout(), werden Sie als nächstes sehen:

/** 
* Logs out the user. 
*/ 
public void logOut() { 
    AccessToken.setCurrentAccessToken(null); 
    Profile.setCurrentProfile(null); 
    setExpressLoginStatus(false); 
} 

Es setzt Zugriffstoken auf NULL .

Auch raten Leute nächsten Anruf aus Ihrer App Anwendungsklasse zu entfernen:

ParseUser.enableAutomaticUser(); 
+0

ParseUser.getCurrentUser(). LogOut(); es funktioniert nicht – KunalK

+0

@KunalK, wenn Ihr Code nicht vertraulich ist, dann können Sie es auf der Basis teilen? Es wäre großartig, Ihre Aktivität mit der Login-Verarbeitung zu sehen. Vielen Dank! – Sheikh

Verwandte Themen