簡體   English   中英

如何查看已經登錄Facebook的用戶?

[英]How to check user already logged in facebook?

我正在使用Facebook javascript SDK將登錄信息與Facebook集成到我的應用程序中。 我的應用程序中有2個JS文件。

  1. FacebookLogin.js
  2. content.js

現在,我正在content.js中加載FacebookLogin.js。 此外,我的FacebookLogin.js中包含以下代碼

var userID;
window.fbAsyncInit = function() {
    //SDK loaded, initialize it
    FB.init({
        appId      : 'MY_APP_ID',
        xfbml      : true,
        version    : 'v2.2'
    });

    //check user session and refresh it
    FB.getLoginStatus(function(response) {
        if (response.status === 'connected') {
            //user is authorized
            userID = response.authResponse.userID;
        } else {
            document.getElementById('status').innerHTML = 'Please log into Facebook.';
        }
    });
};

現在,我想在我的content.js文件中使用該userID變量。 這樣我就可以檢查用戶是否已經登錄,如下所示

if(userID === undefined && userID === null)
    {
        showSocialLoginPopup(); 
        return false;
    }

在這里showSocialLoginPopup()顯示帶有不同登錄選項(如Facebook,Twitter等showSocialLoginPopup()的彈出窗口。現在,如果用戶已經登錄,則我不想顯示該彈出窗口。

這主要是關於范圍的問題。

您所有的.js文件都將加載到同一DOM中,因此可以跨文件訪問變量和函數等。

一種選擇是使userID成為全局變量:

1)確保在FacebookLogin.js之后加載content.js
2)在任何函數或對象之外聲明變量userID

這將允許您在javascript中的任何位置訪問userID

這是有關javascript中變量作用域的小教程:
http://www.w3schools.com/js/js_scope.asp

編輯:另一個潛在的問題可能是時間。

FB.getLoginStatus()是一個異步調用,將花費一些時間來完成,直到該調用完成后才設置userID。

如果content.js中的函數沒有發生某種事件或超時,則它很可能在FB調用完成之前正在執行,這意味着userID仍將是未定義的。

暫無
暫無

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

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