我有以下问题:
如果我运行以下代码,用户登录facebook:
FB.api('/me', function(user) {
alert(user.name);
});
它弹出一个警告,上面写着“Udefined”。
但是如果我按以下方式更改代码:
FB.api( /[MY_REAL_FACEBOOK_ID], function(user) {
alert(user.name);
});
它以正确的方式回应。
怎么可能? 为什么'/我'永远不会工作?
答案 0 :(得分:1)
我认为你可能会在应用程序而不是用户的上下文中查询“/ me”。文档没有尽可能明确,但我遇到了同样的问题。
您是否可以使用FB.getLoginStatus?
设置好FB.init之后,我调用了FB.getLoginStatus,类似于下面的内容。如何做到这一点可能有更好的方法,但它对我有用。
希望这会有所帮助:
FB.getLoginStatus(function (response) {
if (response.session) {
// logged in and connected user, someone you know
graphUrl = "https://graph.facebook.com/me?access_token=" + response.session.access_token + "&callback=displayUser"
var script = document.createElement("script");
script.src = graphUrl;
document.body.appendChild(script);
} else {
// no user session available, someone you dont know
}});
function displayUser(user) {
alert(user.name);
}
答案 1 :(得分:1)
使用以下代码克服未定义问题:
window.fbAsyncInit = function() {
// init the FB JS SDK
FB.init({
appId : your_app_id,
status : true,
xfbml : true
});
// Additional initialization code such as adding Event Listeners goes here
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
alert("connected");
connecter=true;
FB.api('/me', function(user) {
alert(user.name);
alert(user.first_name);
alert(user.last_name);
alert(user.email);
});
}
});