簡體   English   中英

Facebook JS API-頁面不斷刷新

[英]Facebook JS API - Page keeps refreshing

使用Facebook JS SDK登錄時出現一些問題。

好吧,當用戶進入頁面時,它會不斷刷新window.location.reload(); FB.Event.subscribe('auth.login'...中被觸發,即使用戶尚未登錄也是如此。

這是我的腳本:

window.fbAsyncInit = function() {
    FB.init({
        appId   : '445298832195237', // App ID
        status  : true, // check login status
        cookie  : true, // enable cookies to allow the server to access the session
        xfbml   : true  // parse XFBML
    });

    FB.Event.subscribe('auth.login', function(response) 
    {
        $.ajax({async: false,
                type: 'GET',
                url: 'http://hfyt.pl/fb_register.php',
                success: function(data)
                {
                    //alert(data); 
                    window.location.reload();
                }
            });
        });
    };

您可以在http://hfyt.pl/ (使用一些調試器取消對window.location.reload()的注釋)中進行嘗試。 我正在使用Chrome。

據我了解,這是正在發生的事情:

  1. 您的頁面DOM加載
  2. JS SDK異步加載
  3. 加載后,它會檢查登錄狀態
  4. 處於connected狀態時,它將刷新頁面,然后執行步驟1-4。 重復

..並且這種情況在每次加載頁面時都會發生,而不僅僅是第一頁。 為避免這種情況,建議您..

  • 要么將狀態存儲在可以保存頁面刷新的內容中,即localStorage
  • 或重寫您的代碼,以使id不依賴window.document.reload()

我認為您可能需要使用FB.getLoginStatus來檢查是否有人在頁面加載時登錄。 但是,請勿進行任何重定向。 https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/

然后使用FB.Event.subscribe僅在用戶登錄及其響應更改時進行偵聽。

FB.Event.subscribe('auth.authResponseChange', function(response) {  // reload here });

我認為會做到的。

暫無
暫無

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

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