我使用下面的代码来获取用户的位置但是,它不会返回位置
FB.api('/me?fields=picture,location', function(res) {
console.log(res); // no location
});
知道我做错了什么以及如何获得用户位置?
更新
使用Graph API Explorer,它确实会为用户提供位置,但上面的代码却没有。
更新2
任何想法如何使用Facebook JavaScript SDK获取用户的位置?
答案 0 :(得分:2)
如果它在API资源管理器中有效,但在您的应用中没有,则只有一个原因:您没有使用user_location
权限进行授权。在API资源管理器中,您只需在弹出窗口中选择它即可。在您的代码中,您必须使用FB.login
FB.login(function(response) {
console.log(response);
if (response.authResponse) {
//user just authorized your app
FB.api('/me?fields=picture,location', function(res) {
console.log(res);
});
}
}, {scope: 'user_location', return_scopes: true});
更大的例子:http://www.devils-heaven.com/facebook-javascript-sdk-login/
请确保您在App(管理员,开发人员,测试人员)中具有角色的用户尝试此操作,否则它甚至不会要求许可。如果您想要公开,则需要先完成审核流程:https://developers.facebook.com/docs/facebook-login/review
我在第一次回调开始时添加了return_scopes
参数和console.log
,在chrome dev工具中调试响应,并确保它包含user_location
权限。< / p>
顺便说一句,您在响应中也获得了访问令牌,使用调试器检查授权权限:https://developers.facebook.com/tools/debug/accesstoken/