使用facebook javascript sdk

时间:2016-12-31 00:50:03

标签: javascript facebook facebook-graph-api facebook-javascript-sdk

我使用下面的代码来获取用户的位置但是,它不会返回位置

FB.api('/me?fields=picture,location', function(res) {
    console.log(res); // no location
});

知道我做错了什么以及如何获得用户位置?

更新

使用Graph API Explorer,它确实会为用户提供位置,但上面的代码却没有。

更新2

任何想法如何使用Facebook JavaScript SDK获取用户的位置?

1 个答案:

答案 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/