2016-03-29 6 views
0

Ich versuche, das aktuelle Land des Benutzers von Facebook zu erhalten. Ich bin in der Lage, Daten wie E-Mail, ID, Nachname, Vorname usw. zu holen, aber wenn es um Land geht, kann ich den richtigen Code nicht finden. Kann mir jemand die erforderlichen Berechtigungen sagen und auch, wie man die Daten vom Objekt holt?Benutzer Land von Facebook

Derzeit sind meine Berechtigungen sind

loginButton.setReadPermissions(Arrays.asList("public_profile", "email"));

und ich bin Abrufen von Daten wie diese

loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 
      GraphRequest graphRequest = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { 
       @Override 
       public void onCompleted(JSONObject object, GraphResponse response) { 
        Log.d("JSON", "" + response.getJSONObject().toString()); 
        try { 
         name = object.getString("name"); 
         first_name = object.optString("first_name"); 
         last_name = object.optString("last_name"); 
         fname.setText(first_name); 
         lname.setText(last_name); 
         e_mail.setText(email); 
         dp1.setProfileId(object.optString("id")); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      }); 
      /*AccessToken accessToken = loginResult.getAccessToken(); 
      Profile profile = Profile.getCurrentProfile(); 
      displayMessage(profile);*/ 
      Bundle parameters = new Bundle(); 
      parameters.putString("fields", "id,name,first_name,last_name,email,picture.type(large)"); 
      graphRequest.setParameters(parameters); 
      graphRequest.executeAsync(); 
     } 

Antwort

0

Um den aktuellen Standort zu erhalten, das ist, wie es geht:

Fragen Sie einfach die richtigen Berechtigungen wie user_location und danach

bearbeiten

Mit dieser Codezeile:

String currentCity = obj.getJSONObject("location").getString("name"); 

als:

    try { 
         name = object.getString("name"); 
         first_name = object.optString("first_name"); 
         last_name = object.optString("last_name"); 
         String currentCity = obj.getJSONObject("location").getString("name"); 
         fname.setText(first_name); 
         lname.setText(last_name); 
         e_mail.setText(email); 
         dp1.setProfileId(object.optString("id")); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 

Fügen Sie auch location in folgenden:

parameters.putString("fields", "id,name,first_name,last_name,email,location,picture.type(large)"); 
+0

‚obj.getJSONObject (" location ")". getString ("Name"); ' Funktioniert nicht. Wie kann ich graphObject verwenden? – Shahal

+0

@Shahal Ich habe nur vorgeschlagen, dass Sie verwenden können, wie Sie anderen Code verwenden. Überprüfen Sie, ob Sie bearbeiten können. –

+0

Entschuldigung, Bruder. Es war meine Schuld, ich habe vergessen, den Bundles einen Ort hinzuzufügen. – Shahal