GraphRequest(Android Facebook SDK)中缺少位置数据
试图让我的Android应用程序获取登录Facebook用户的电子邮件、生日和位置。前两个字段可以成功检索,但Graph API的响应中缺少位置,我不知道为什么 我使用以下权限登录: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
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资源管理器都不允许使用位置,即使我已授予两者的访问权限。我想我需要为这种类型的许可做一些特殊的事情,但我不确定是什么。