2017-02-03 2 views
1

Ich benutze Facebook Login für Android. Es klappt. Ich kann mich über den Emulator einloggen. Ich muss jedoch Informationen an meine Rails Rest API zurücksenden. Bei facebook callback success möchte ich das access token, den provider ("facebook"), die uid, facebook user name, die facebook user email und das facebook image icon zurücksenden.Erhalten Sie Authentifizierungstoken und Benutzerinformationen von Facebook

loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
    @Override 
    public void onSuccess(LoginResult loginResult) { 
    Log.i("AUTHENTICATION TOKEN", String.valueOf(loginResult.getAccessToken())); 
    } 

Logcat zeigt folgendes:

I/AUTHENTICATION TOKEN: {AccessToken token:ACCESS_TOKEN_REMOVED permissions:[public_profile, contact_email, email]} 

Wie bekomme ich die Informationen, die ich onSuccess brauchen?

+1

gesehen werden kann, erteilt hat _ "Ich möchte das Zugangs-Token, den Provider (" Facebook "), die Nutzer-ID, den Facebook-Nutzernamen, die Facebook-Nutzer-E-Mail und das Facebook-Bildsymbol zurücksenden." _ - Nein, tu das nicht. Jeder könnte Anfragen mit gefälschter ID, Name und E-Mail an Ihre API senden. Senden Sie nur das Zugriffstoken (und möglicherweise auch "facebook", wenn Sie es von anderen Tokenarten unterscheiden müssen), und führen Sie dann eine serverseitige API-Anfrage mit diesem Token aus, um die restlichen Benutzerdetails abzurufen. – CBroe

+0

@CBroe guter Punkt, ich werde das berücksichtigen – Donato

Antwort

1

Sobald Sie den Zugriffstoken unter Verwendung haben LoginResult.getAccessToken(),

Sie benötigen erhielt die Facebook Graph API mit dem Zugriffstoken nennen. Vom SDK Docs,

GraphRequest request = GraphRequest.newMeRequest(
     accessToken, 
     new GraphRequest.GraphJSONObjectCallback() { 
      @Override 
      public void onCompleted(
        JSONObject object, 
        GraphResponse response) { 
       // Application code 
      } 
     }); 
Bundle parameters = new Bundle(); 
parameters.putString("fields", "id,name,email"); 
request.setParameters(parameters); 
request.executeAsync() 

Die JSONObject object enthält die Benutzerinformationen erforderlich sofern der Benutzer alle notwendigen Berechtigungen für Ihre Anwendung

Die Liste der Felder für Benutzer zur Verfügung here

+0

Dieser Code gibt mir nur eine ID und einen Namen. Aber wo ist die UID, E-Mail und Facebook-Symbol? Es ist nicht in der Ergebnismenge. – Donato

+0

Wie bekomme ich die UID? Das ist der wichtigste Teil. – Donato

+0

Das ID-Feld ist die eindeutige ID für den Nutzer und ist spezifisch für Ihre App. Überprüfen Sie den Link, den ich in der letzten Zeile der Antwort für die Liste der verfügbaren Felder – akash93

0

versuchen, diese

Log.i("AUTHENTICATION TOKEN", AccessToken.getCurrentAccessToken().getToken()); 
Verwandte Themen