[英]How to check user already logged in facebook?
我正在使用Facebook javascript SDK將登錄信息與Facebook集成到我的應用程序中。 我的應用程序中有2個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.