簡體   English   中英

可以找出用戶是否通過javascript API登錄facebook?

[英]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.

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