[英]New Facebook API: using getLoginStatus to detect whether user is logged in
[英]Possible to find out whether a user is logged into facebook over javascript API?
這個問題不是一個重復的這一個 。
我不想知道用戶是否已經授權我的應用程序,但是如果用戶登錄到facebook(完全獨立於我的應用程序)。
原因是我想在我的html代碼中pring用戶注釋,以便搜索引擎可以索引它們。
當用戶登錄到Facebook時,我想用facebook評論片替換html代碼。
如果沒有,則應顯示替代舊學校評論表。
我會從圖表api中正確地提取評論,將它們放在我的數據庫中,使用經典表單完成的評論應該通過api(不一定是用戶,可能是管理員帳戶......)發布,以便全部數據同步。
我查看了Javascript SDK Docs,也找到了函數getloginstatus,但是文檔很糟糕而且沒有定論。 我知道在Facebook代碼中通常還有一些功能,這些功能沒有記錄或在更高級別的apis中實現。
我的問題是:
我可以以某種方式找出用戶是否登錄到Facebook?
我可以以某種方式回調或發布評論的通知,因此我可以觸發同步到我的數據庫或者我是否必須定期“抓取”圖形api?
有一種非正式的,官方支持的方式為Facebook做這個(我認為最后一個版本的文檔在這一點上更清晰)。 使用Javascript SDK ,您可以:
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({appId: 'YOUR APP ID', status: true, cookie: true,
xfbml: true});
FB.getLoginStatus(function(o) {
if (!o && o.status) return;
if (o.status == 'connected') {
// USER IS LOGGED IN AND HAS AUTHORIZED APP
} else if (o.status == 'not_authorized') {
// USER IS LOGGED IN TO FACEBOOK (BUT HASN'T AUTHORIZED YOUR APP YET)
} else {
// USER NOT CURRENTLY LOGGED IN TO FACEBOOK
}
});
};
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>
拋開:如果XAuth已經流行起來,那么對於支持該標准的任何站點,都可以以更通用和受支持的方式執行此操作。
本文
https://grepular.com/Abusing_HTTP_Status_Codes_to_Expose_Private_Information
識別Google和Facebook中的安全風險,以確定用戶是否已登錄。雖然沒有官方API來檢查用戶是否已登錄而該用戶未明確允許您訪問此信息,但上述文章說明了您可以“猜測”用戶是否已登錄。
注意:如果Google和Facebook識別出這些安全風險,那么該文章會識別出“黑客”,因此無法保證將來可以使用。
我也遇到了類似的要求,用以下代碼解決了我的問題; 使用Javascript SDK,我使用了FB對象。 FB是一個facebook對象,它有一個名為_userStatus的屬性,可以像下面這樣使用。
if(FB._userStatus == "connected")
{
// USER IS LOGGED IN AND HAS AUTHORIZED APP
}
else if(FB._userStatus == "notConnected"){
// USER IS LOGGED IN TO FACEBOOK (BUT HASN'T AUTHORIZED YOUR APP YET)
}
else if(FB._userStatus == "unknown")
{
// USER NOT CURRENTLY LOGGED IN TO FACEBOOK
}
上面的代碼非常有用。 它可以在頁面的任何部分使用,因為長FB對象不為空。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.