gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 17:15:34 27 4
gpt4 key购买 nike

尝试让我的 Android 应用程序获取登录 Facebook 用户的电子邮件、生日和位置。可以成功检索前两个字段,但图形 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 个请求的字段,as shown here

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

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

为什么图形响应中不存在请求的位置字段?

最佳答案

代替 location 在 Bundle 参数中请求 location{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");

关于android - GraphRequest (Android Facebook SDK) 中缺少位置数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39230508/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com