1

我正在嘗試檢索托管在Google App Engine上的Web應用程序上的Facebook用戶信息。使用JavaScript SDK檢索Facebook用戶信息時出錯

設置爲:1.在谷歌的默認appspot.com上託管的web應用程序。 2.有一個Facebook應用程序已註冊,並配置爲「與Facebook登錄網站」。

我現在用的是FB的JavaScript SDK通過下面簡單的代碼來驗證和獲取數據:

function login(){ 
    FB.getLoginStatus(function(r) { 
     if(r.status === 'connected') { 
       FB.api('/me', function(user) { 
         alert(JSON.stringify(user)); 
        }); 
     }else{ 
      FB.login(function(response) { 
        if(response.authResponse) { 
         alert("Now.... Thats better with FB!"); 
       } else { 
        alert("You should connect to FB."); 
       } 
     }); 
    } 
    }); 
}; 

但是,當我得到的「用戶」響應返回從FB.api(...)調用,其下面的JSON:

{"error":{"type":"http", "message":"unknown error"}} 

在我的Facebook應用程序,我的「網站網址」中的「網站與Facebook登錄」臉譜應用程序設置的部分是指向我的GAE應用程序的HTTPS地址。我不確定爲什麼會出現這樣的錯誤。

我花了大量的時間搜索StackOverflow和整個網頁,但沒有提及此。有人可以請...真的請幫忙! :)

謝謝。

+0

它看起來像語法錯誤...檢查你的括號。代碼 – 2013-04-10 02:14:19

+0

@Sam上有一個額外的支架,末尾有一個額外的花括號,所以刪除第二個花括號'}'並檢查 – 2013-04-10 04:23:47

+0

謝謝你們。但是額外的支架是因爲我錯誤地將代碼縮減爲問題,而不是問題。我現在更新了完整的代碼。 – Siamak 2013-04-10 04:58:49

回答

2

相當長的一段經過調查和嘗試/錯誤,我發現這個問題是什麼:) 我是從一個onclick事件調用login()功能如下:

<a href='' onclick='login();'> 

現在稱爲Facebook的登錄對話框我由於直到這個日期我才知道一個問題(功能?),login()沒有正確返回。我需要在onclick函數調用結束時添加return false;以確保瀏覽器執行關閉打開的窗口(其中FB.login依賴於存儲適當的訪問鍵)的默認行爲。因此,由於窗口行爲不正常,正確的訪問密鑰不能被FB.api存儲和找到,因此調用失敗。長話短說,修復如此簡單:

<a href='' onclick='login();return false;'> 

希望這可以幫助別人。

相關問題