[英]fb.api returns 'undefined' on connected user
下面的代碼在名稱和 email 上給了我一個“未定義”。但是用戶登錄是因為我有訪問令牌和 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'});
}
當我 output fb.api 對控制台的完整響應時,我得到
[11:46:10.369] ({error:"load-error: unknown"})
我現在看到你正在嘗試做什么和問題所在。
為什么會失敗:
您正在發出異步請求(使用FB.api方法),然后提交一個表單(這是一個猜測,因為您沒有包含所有代碼)重新加載整個頁面,弄亂了異步請求。
至於如何解決問題:
在我看來,最好的解決方案是使用服務器端身份驗證過程,然后才在 canvas 加載時使用客戶端 sdk。這樣您將在客戶端和服務器端都擁有訪問令牌。
另一種方法是不提交表單,而是使用訪問令牌向您的服務器發出 ajax 請求(它可以在 POST 中),因為這兩個請求都是異步的( FB.api和您服務器的請求)一切都應該是一個確定。
我認為一個快速修復方法是在 FB.api function 中提交表單。所以它看起來像:
FB.api('/me', function(response) {
console.log('Good to see you, ' + response.name + '.' +response.email);
document.forms['token'].submit();
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.