簡體   English   中英

通過PHP SDK登錄Facebook,然后使用JS SDK

[英]Facebook Login via PHP SDK, then use JS SDK

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

1)混合使用兩個SDK會導致問題嗎?

2)我按照文檔中的說明添加了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,但是怎么辦? 這個問題將Facebook授權令牌從PHP傳遞到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進行的,那么問題出在哪里呢?

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

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>

在第一個版本中,對friends方法的調用在getLoginStatus方法之外,因此在設置變量accesToken之前調用了它,此外,在test()調用之后,我還沒有“ return false”語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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