我创建了我的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登录按钮时才会出现问题。任何想法?
编辑:我发现它确实调用了它,如果我说在警告中放置警告(“测试”),但我在页面上定义的任何函数并尝试调用它返回说它没有定义。
答案 0 :(得分:3)
我认为您希望在登录发生后或者用户登录并且已经登录时收到有关已登录用户的通知。在这种情况下,您必须订阅auth事件并处理它:< / p>
FB.Event.subscribe('auth.authResponseChange',function(response){ if(response.status ==='connected'){ // yourcode } else if(response.status ==='not_authorized'){ //你的代码 } else { // yourcode } });
答案 1 :(得分:2)
新的Facebook登录流程表示如果用户当前未登录Facebook,则仅显示Facebook登录按钮。如果你仍然显示它,当它们点击它时什么也不会发生,因为它会检测到用户已经登录到facebook,因此将退出登录过程并且不会调用post login钩子。 facebook文档说首先检测用户是否已登录到facebook,如果他们已登录,请抓住facebook uid并简单地执行您作为post login hook的一部分调用的函数。 Facebook登录按钮就是这样 - 一个登录Facebook的按钮,而不是登录您网站的按钮。
答案 2 :(得分:1)
该事件显示onlogin,因此只有在您通过Facebook Connect登录时才会执行。
如果您已登录Facebook Connect,则该功能将无法执行,因为您已登录...?
答案 3 :(得分:0)
即使您认为应该在该页面上,您尝试呼叫的功能很可能无法访问。确保在函数名称后删除了()。事实上“警报”确实有效但你的功能并没有证明这一点。确保脚本通过使其全局化并确保加载脚本来访问您的函数。
答案 4 :(得分: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>