我似乎无法获取有关我网站登录用户的任何信息,例如我的示例中的警报只是说“未定义”而不是名称。我不知道我做错了什么,因为我正在按照示例代码写信。
这是来自页面的<body>
。
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'blahblah',
status : true,
cookie : true,
xfbml : true,
oauth : true
});
FB.api('/me', function(response) {
alert(response.name);
});
};
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
</script>
<div class="fb-login-button" data-show-faces="true" data-width="200" data-max-rows="1"></div>
我可以登录,但警报从不说出我的名字。
答案 0 :(得分:0)
在FB.init调用之后发生FB.api调用。它不以任何方式与登录按钮绑定,因此它在您登录之前被调用。如果您希望在单击时发生这种情况,则需要修改代码,以便在您执行之后不会尝试执行登录。
尝试将代码更改为:
FB.Event.subscribe('auth.login', function(response) {
FB.api('/me', function(response) {
alert(response.name);
});
});
答案 1 :(得分:0)
在运行代码时,您需要先检查FB.getLoginStatus
请参阅:https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/
然后您的代码可能类似于:
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
FB.api('/me', function(response) {
alert(response.name);
});
} else {
FB.login( see documentation for FB.login );
}
});