0

我開發了一個應用程序,用戶通過Facebook(PHP SDK)登錄;現在我想添加JS SDK,因爲我想實現一個通用的朋友選擇器(http://facebook-friend-selector.codersgrave.com/),它可以與JS SDK一起工作。我有兩個問題:Facebook通過PHP SDK登錄,然後使用JS SDK

1)可以混合兩個SDK導致問題?

2)I添加JS SDK代碼如文檔中解釋,並試圖簡單的請求

FB.api('/me/friends', function(response) { 
    alert(JSON.stringify(response)); 
}); 

但我得到一個錯誤(未知錯誤);我也試過了一個對話框

FB.ui({ 
    method: 'feed', 
    link: 'https://developers.facebook.com/docs/dialogs/', 
    caption: 'An example caption', 
}, function(response){}); 

但是盒子出現並突然消失。我認爲這個問題與認證有關...我想,因爲我的用戶通過PHP進行身份驗證,我需要將訪問令牌傳遞給JS,但是怎麼做?這個問題Passing the Facebook Authorization Token from PHP to Javascript似乎正是我所需要的,但我不明白答案:它說要將令牌存儲在cookie中,但JS如何知道它,Cookie的名稱應具有哪些名稱? 最後,如果我這樣做

FB.getLoginStatus(function(response) { 
    if (response.status === 'connected') { 
    alert('connected'); 
    var uid = response.authResponse.userID; 
    var accessToken = response.authResponse.accessToken; 
    } 
}); 

我居然得到了「連接」警報,這意味着JS知道用戶登錄,即使登錄是通過PHP,那麼問題出在哪裏?

+0

哈哈哈,偉大的想法都一樣嗎? http://stackoverflow.com/questions/20785993/given-url-is-not-permitted-by-app-setting-with-js-sdk-but-not-with-loginurl-fr。請在加載頁面之前打開一些javascript控制檯(firebug,chrome默認控制檯,IE默認控制檯),然後查看您是否收到有關域問題的日誌消息。告訴我你看到了什麼。我仍然無法相信我們的情況有多相似。 – Letterman

+0

是的,情況完全一樣:)但在我的情況下,我沒有得到任何錯誤! 如果我嘗試記錄答案的ajax調用 https://www.facebook.com/dialog/feed和https://graph.facebook.com/me/friends都執行在0毫秒(根據Firefox)沒有答案。 – Eugenio

+0

對不起,我的意思是我沒有得到任何特定的錯誤,就像你的情況一樣,調試警報顯示「未知錯誤」爲錯誤信息 – Eugenio

回答

0

已解決。我的代碼包含了兩個愚蠢的錯誤,這是正確的代碼:

function test(){ 
    FB.getLoginStatus(function(response) { 
     if (response.status === 'connected') { 
      var uid = response.authResponse.userID; 
      var accessToken = response.authResponse.accessToken; 

      FB.api('/me/friends', function(response) { 
       alert(JSON.stringify(response)); 
      }); 
     } 
    }); 
} 

<a href="" onclick="test();return false;">Test</a> 

在第一個版本的調用朋友方法是getLoginStatus方法之外,因此它設置的變量accesToken之前調用,另外,我還在test()調用之後返回「false false」語句。