0

Ich bemühe mich sehr, Userland zu bekommen, aber ich kann es nicht bekommen. Kannst du nicht verstehen, was genau hier falsch ist?Facebook Android SDK 4.0+ user_location?

Ich beziehe mich this Dokumentation. Dies ist, was ich bisher versucht -

public interface IFacebokLoginConstants extends ILoginConstants { 

String KEY_FIRST_NAME = "first_name"; 
String KEY_LAST_NAME = "last_name"; 
String KEY_EMAIL = "email"; 
String KEY_NAME = "name"; 
String KEY_LOCATION = "location{location}"; 
String[] READ_PERMISSIONS = {"public_profile", "email", "user_friends", "user_location"}; 
String[] WRITE_PERMISSIONS = {"publish_actions"}; 
String FIELD_KEY = "fields"; 

String FIELD_VALUE = KEY_ID + "," 
     + KEY_FIRST_NAME + "," 
     + KEY_LAST_NAME + "," 
     + KEY_EMAIL + "," 
     + KEY_LOCATION + "," 
     + KEY_NAME; 
} 


    //---- inside activity 
    mLoginManager.logInWithPublishPermissions(this, Arrays.asList(WRITE_PERMISSIONS)); 

    mLoginManager.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 

      Log.e(TAG, "LoginResult permissions: " + loginResult.getAccessToken().getPermissions()); 

      Log.e(TAG, "LoginResult Denied Permissions: " + loginResult.getAccessToken().getDeclinedPermissions()); 

      mUserId = loginResult.getAccessToken().getUserId(); 


      if (!loginResult.getAccessToken().getPermissions().contains("email")) { 

       //--- current activity is FacebookLoginActivity 
      mLoginManager.logInWithReadPermissions(FacebookLoginActivity.this, Arrays.asList(READ_PERMISSIONS)); 
      } else { 

       callUserInfoRequest(loginResult); 

      } 

     } 

     @Override 
     public void onCancel() { 

      showShortToast("Login cancelled"); 
     } 

     @Override 
     public void onError(FacebookException error) { 

      Log.e(TAG, "Error: " + error.getMessage()); 

     } 
    }); 

und dieses Ding info Benutzers

private void callUserInfoRequest(LoginResult loginResult) { 

    GraphRequest userInfoRequest = GraphRequest.newMeRequest(
      loginResult.getAccessToken(), 
      new GraphRequest.GraphJSONObjectCallback() { 
       @Override 
       public void onCompleted(JSONObject object, GraphResponse response) { 

        ///---- not receiving location information 
        Log.d(TAG, response.toString()); 


        try { 
         mUserName = object.getString(KEY_NAME); 
         mUserFirstName = object.getString(KEY_FIRST_NAME); 
         mUserLastName = object.getString(KEY_LAST_NAME); 
         mUserEmail = object.getString(KEY_EMAIL); 


         //after userInfo is acquired get profile image.. 
         callProfileImageRequest(); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      } 
    ); 

    Bundle parametersBundle = new Bundle(); 
    parametersBundle.putString(FIELD_KEY, FIELD_VALUE); 
    userInfoRequest.setParameters(parametersBundle); 
    userInfoRequest.executeAsync(); 
} 
+0

überprüfen Sie diese http://StackOverflow.com/A/32073757/3535399 –

+0

@Vivektakrani bereits versucht, diese Lösung - Standort {Standort} wie im Kommentar in oben genannten Code –

+0

Versuchen Sie Ihre Anfrage in Graph API Explorer zuerst, und was zu sehen genau du zurück, und in welcher Struktur. https://developers.facebook.com/tools/explorer – CBroe

Antwort

0

abzurufen Da ich keinen Zugriff auf App in Facebook-Konsole hatte, war ich über Berechtigungen nicht sicher Von der App angefordert. Nach Diskussion mit @MingLi in den obigen Kommentaren habe ich erfahren, dass die Berechtigung "user_location" eine Genehmigung von Facebook benötigt und nicht genehmigt wurde, obwohl sie angefordert wurde.

Der obige Code hat nach Genehmigung von Facebook funktioniert.