3

我已经创建了我的 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") 它会调用它,但是我在页面上定义的任何函数并尝试调用它都会返回说它没有定义。

4

5 回答 5

3

我认为您希望在登录发生后或用户进入页面并已登录后收到有关登录用户的通知。在这种情况下,您必须订阅 auth 事件并处理它:

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

于 2013-07-12T08:25:33.240 回答
2

新的 facebook 登录流程表示仅在用户当前未登录 facebook 时才显示 facebook 登录按钮。如果你仍然显示它,当他们点击它时不会发生任何事情,因为它会检测到用户已经登录到 facebook,因此将退出登录过程并且不会调用登录后挂钩。facebook 文档说首先检测用户是否已经登录到 facebook,如果他们已经登录,获取 facebook uid 并简单地执行您将作为登录后挂钩的一部分调用的函数。facebook 登录按钮很简单——一个登录 facebook 的按钮,而不是一个登录您网站的按钮。

于 2011-05-25T23:15:43.630 回答
1

该事件显示 onlogin,因此它只会在您通过 Facebook Connect 登录时执行。

如果您已经在 Facebook Connect 上登录,那么该功能将不会执行,因为您已经登录...?

于 2010-11-04T20:41:17.020 回答
0

您尝试调用的函数很可能无法在该页面上访问,即使您认为它应该是。确保删除了函数名称后的 ()。“警报”确实有效,但您的功能并不能证明这一点。确保脚本可以访问您的函数,方法是将其设为全局并确保您的脚本已加载。

于 2014-09-25T06:27:50.900 回答
0

该函数必须在窗口上定义。解决方案是:

// 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>
于 2020-07-27T04:31:04.247 回答