GraphRequest(Android Facebook SDK)中缺少位置数据

GraphRequest(Android Facebook SDK)中缺少位置数据,android,facebook,facebook-graph-api,Android,Facebook,Facebook Graph Api,试图让我的Android应用程序获取登录Facebook用户的电子邮件、生日和位置。前两个字段可以成功检索,但Graph API的响应中缺少位置,我不知道为什么 我使用以下权限登录: LoginManager.getInstance().logInWithReadPermissions(LoginActivity.this, Arrays.asList("public_profile", "user_friends", "email", "user_birthday", "user_locati

试图让我的Android应用程序获取登录Facebook用户的电子邮件、生日和位置。前两个字段可以成功检索,但Graph API的响应中缺少位置,我不知道为什么

我使用以下权限登录:

LoginManager.getInstance().logInWithReadPermissions(LoginActivity.this, Arrays.asList("public_profile", "user_friends", "email", "user_birthday", "user_location"));
GraphRequest的实现如下所示:

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

            try {
                Log.d("jsonTest171", object.toString(4));

                String email = object.getString("email");
                UserData.emailAddress = email;

                String birthday = object.getString("birthday");
                UserData.birthday = birthday;

                String location = object.getJSONObject("location").getString("name");
                UserData.location = location;
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    });
Bundle parameters = new Bundle();
parameters.putString("fields", "id,email,location,birthday");
request.setParameters(parameters);
request.executeAsync();
Facebook用户将应用程序设置为允许所有3个请求字段

这是上述代码中包含的调试行的LogCat输出:

{
    "id": "101936745620608",
    "email": "test77124@gmail.com",
    "birthday": "12\/20\/1983"
}

为什么请求的位置字段没有出现在图形响应中?

而不是在Bundle参数中请求
位置{location}
,例如:

parameters.putString("fields", "id,email,birthday,location{location}");
响应的位置部分如下所示:

"location":{  
  "location":{  
    "city":"",
    "country":"",
    "latitude":0,
    "longitude":0 
  },
  "id":""
}
因此,您可以在回调方法中检索它们,如:

JSONObject location = object.getJSONObject("location").getJSONObject("location");
String city = location.getString("city");
String country = location.getString("country");

您是否已验证用户是否实际授予了该应用程序的权限?(调试令牌,或使用它调用
/me/permissions
进行验证。)是的,用户已允许所有请求的权限。我用/me/permissions/进行了双重检查,并且用户位置设置为“已授予”。您能否在Graph API Explorer中尝试该请求(使用您的应用程序id),-结果如何?它是否显示任何调试消息?该查询中也缺少位置。在左侧,位置切换变灰,显示“字段为空或访问令牌不允许”。但我使用的是从登录结果中获得的访问令牌,其中包括用户位置权限。还有什么会导致它被禁止呢?嗯,安卓系统的实现看起来没有任何问题。使用您提供的链接,我的应用程序和Graph API资源管理器都不允许使用位置,即使我已授予两者的访问权限。我想我需要为这种类型的许可做一些特殊的事情,但我不确定是什么。