2013-11-15 88 views
0

我想使用fb在我的聊天箱中登錄我的用戶。我的聊天室可以共享給其他使用JavaScript的網站。打開fb登錄的新窗口

我想要做的是,當用戶點擊一個按鈕「FB登錄」時,它會打開一個窗口進行fb登錄。那麼用戶將接受權限,然後..它將登錄到我的聊天室。

我的問題是,聊天箱如何知道用戶是否登錄?此登錄信息的觸發事件? ,這樣chatbox就會執行init();改變按鈕 (更改登錄按鈕 - >註銷按鈕)..

我的方法是,首先,用戶訪問一個網站(其他網站與我的chatbox使用javascript) - > chatbox運行init )[一個函數,顯示聊天室的名稱,用戶名,然後按鈕登錄,如果用戶在init()運行之前登錄,按鈕是註銷] - >如果用戶登錄,javascript將打開一個重定向到Facebook登錄鏈接的PHP文件 - >接受用戶權限,按鈕將自動從登錄變爲登出。與登出相同。該按鈕將從註銷更改爲登錄

回答

0

在Javascript中,我知道有兩種方法可以檢查當前訪問者是否已登錄到Facebook並已接受/未接受您的fb_app。

  1. 在使用FB.init({狀態:真正})頁面加載參數和認購auth.statusChange事件。
  2. 頁面加載,甚至異步後,使用FB.getLoginStatus

在這兩種情況下,如果沒有錯誤,回調函數將被解僱。 這裏檢查是否response.status存在,只是要確定還有沒有錯誤,它應該有三個可能的值:

  1. response.status == "connected" - 你的訪問者已經接受了Facebook應用程序(並登錄到Facebook的)
  2. response.status == "not_authorized" - 您的訪客沒有接受Facebook應用程序(並登錄到Facebook)
  3. response.status == "unknow" - 好吧,如果在您的網頁中一切正常,它實際上意味着,您的訪問者未登錄到Facebook。

訂閱auth.statusChange可能是,如果你想趕上已登錄到Facebook上後,第一個頁面視圖,在訪問期間,甚至在目前的瀏覽器不同的選項卡上的遊客也很有用。

在任何情況下,我建議使用Javascript調試器,並做不同的測試:與連接,記錄和未登錄的用戶。

在下面一行的更新:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="US-ASCII"> 
<title>test-facebook-login</title> 
</head> 
<body> 

<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
    // init the FB JS SDK 
    FB.init({ 
     appId  : '1234567890',    // App ID from the app dashboard 
     channelUrl : '//www.yoursitehere.com/channel.html', 
     status  : true,      // Check Facebook Login status 
     xfbml  : true      // Look for social plugins on the page 
    }); 

    FB.Event.subscribe('auth.statusChange', function(response) { 

     if (window.console) 
      window.console.log(response); 

    }); 

    /* 
    // On the other hand you could call this: 

    FB.getLoginStatus(function(response) { 

     if (window.console) 
      window.console.log(response); 

    }); 
    */ 


    // Additional initialization code such as adding Event Listeners goes here 
    }; 

    (function(){ 
    if (document.getElementById('facebook-jssdk')) {return;} 
    var headElement = document.getElementsByTagName('head')[0]; 
    var facebookJS = document.createElement('script'); 
    facebookJS.id = 'facebook-jssdk'; 
    facebookJS.src = '//connect.facebook.net/en_US/all.js'; 
    headElement.parentNode.appendChild(facebookJS); 
    }()); 
</script> 
</body> 
</html> 
+0

如果用戶訪問該頁面,並沒有登錄,登錄鏈接將顯示。如果他/她點擊登錄(頁面加載後),它會記錄(響應)?是它使用FB.Event.subscribe的( 'auth.statusChange',功能(響應){ 如果(window.console) window.console.log(響應); }); –

+0

驗證。statusChange用於瞭解用戶是否登錄Facebook,即使登錄並接受了您的FB應用程序 – freedev