簡體   English   中英

FB登錄按鈕不調用登錄功能

[英]FB Login button not calling onlogin function

我已經創建了我的 fb 登錄按鈕

<fb:login-button perms="email" size="small" onlogin="check_login_session()">Sign Up Using Facebook</fb:login-button>

我也已經定義了 check_login_session 函數,因為我在頁面上其他地方的 .click 鏈接上使用它(它確實有效)。 但是,我的問題是當我已經登錄到 FB 並單擊按鈕時,FB 彈出窗口出現,然后消失並且什么也不做。 不會調用 onlogin,也不會顯示任何錯誤。

但是,如果我要注銷,然后單擊該按鈕,它會給我 fb 登錄提示,填寫並提交后將按預期運行。 只有當我已經登錄並單擊 FB 登錄按鈕時才會出現問題。 有什么想法嗎?

編輯:我發現如果我在 onlogin 中說 put alert("Test") 但我在頁面上定義並嘗試調用它的任何函數返回說它未定義,它確實會調用它。

我認為您希望在登錄發生后或用戶進入頁面並已登錄后收到有關登錄用戶的通知。在這種情況下,您必須訂閱 auth 事件並處理它:

FB.Event.subscribe('auth.authResponseChange', function(response) { if (response.status === 'connected') { //你的代碼 } else if (response.status === 'not_authorized') { //你的代碼 } else { //你的代碼 } });

新的 facebook 登錄流程表示,如果用戶當前未登錄到 facebook,則僅顯示 facebook 登錄按鈕。 如果你仍然顯示它,當他們點擊它時不會發生任何事情,因為它會檢測到用戶已經登錄到 Facebook,因此將退出登錄過程並且不會調用登錄后掛鈎。 facebook 文檔說首先檢測用戶是否已經登錄到 facebook,如果他們已登錄,則獲取 facebook uid 並簡單地執行您將作為登錄后掛鈎的一部分調用的函數。 facebook 登錄按鈕就是這樣——一個用於登錄 facebook 的按鈕,而不是一個用於登錄您網站的按鈕。

該事件表示 onlogin,因此它只會在您通過 Facebook Connect 登錄時執行。

如果您已經登錄 Facebook Connect,那么該功能將不會執行,因為您已經登錄...?

很可能您嘗試調用的函數在該頁面上無法訪問,即使您認為它應該可以訪問。 確保刪除了函數名稱后的 ()。 “警報”確實有效,但您的功能並不能證明這一點。 通過將其設為全局並確保您的腳本已加載,確保腳本可以訪問您的函數。

該函數必須在窗口上定義。 解決辦法是:

// somewhere before the button is rendered
window.loginCallback = () => {
    // callback logic
}

    <div
      className="fb-login-button"
      data-max-rows="1"
      data-size="large"
      data-button-type="continue_with"
      data-onlogin="loginCallback();"
    ></div>

暫無
暫無

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

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