簡體   English   中英

fb.api 在連接的用戶上返回“未定義”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM