fb.api 在连接的用户上返回“未定义”
fb.api returns 'undefined' on connected user
下面的代码给了我一个关于名称和电子邮件的"未定义"。但是,用户已登录,因为我确实有访问令牌和 UID?
function getToken(){
FB.login(function(response) {
if (response.authResponse) {
var access_token = response.authResponse.accessToken;
var uid = response.authResponse.userID;
document.getElementById('accessToken').value=access_token;
document.getElementById('uid').value=uid;
FB.api('/me', function(response) {
console.log('Good to see you, ' + response.name + '.' +response.email);
});
document.forms['token'].submit();
} else {
return false;
}
}, {scope:'email,user_likes,friends_likes'});
}
当我将 fb.api 的完整响应输出到控制台时,我得到
[11:46:10.369] ({error:"load-error: unknown"})
我现在明白你想做什么和问题了。
失败原因:
您正在发出异步请求(使用 FB.api 方法),然后提交一个表单(这是一个猜测,因为您没有包含所有代码),该表单重新加载整个页面,弄乱了异步请求。
至于如何解决问题:
在我看来,最好的解决方案是使用服务器端身份验证过程,然后才在画布加载时使用客户端 sdk。这样,你将在客户端和服务器端拥有访问令牌。
另一种方法是不提交表单,而是使用访问令牌向服务器(可以在 POST 中)发出 ajax 请求,因为两个请求都是异步的(FB.api 和到您的服务器的请求)一切都应该正常。
我认为快速解决方法是在FB.api函数中提交表单。所以它看起来像:
FB.api('/me', function(response) {
console.log('Good to see you, ' + response.name + '.' +response.email);
document.forms['token'].submit();
});
相关文章:
- 这.SOMETHING 总是返回未定义的 - extjs
- React+Meteor:this.ops返回未定义
- "日期“;AJAX请求返回的类型值未定义
- Regex提取URL返回数组的一部分;未定义”;
- 换行符拆分返回“”;未定义”;
- 解析-为什么user.getSessionToken()返回未定义的结果
- Javascript函数返回未定义
- JavaScript-获取数据属性的值返回未定义的值
- .val()返回未定义的.text返回随机代码
- 为什么innerHTML返回“未定义”
- "这个“;正在返回未定义的
- 函数jquery的未定义返回
- 为什么typeof的数组的数组的未定义值返回为“0”;未定义的“;我的条件不认为是真的
- winJS 从函数未定义返回 var
- $.get jquery 中的未定义返回
- Javascript 函数未定义返回
- 数据 ID 一直未定义返回
- 函数调用Javascritpt的未定义返回值
- 在函数中提示未定义返回.(问题)范围
- JSON字符串的未定义返回