gpt4 book ai didi

javascript - FB.getLoginStatus 触发浏览器弹出窗口阻止程序。我怎样才能阻止它?

转载 作者:行者123 更新时间:2023-11-28 02:32:59 24 4
gpt4 key购买 nike

我通过按钮单击事件调用 Facebook JS SDK 的 FB.getLoginStatus。我的问题是,如果状态参数设置为 true,则会触发浏览器弹出窗口阻止程序,从而阻止显示登录对话框。但是,当我的状态为 false 时,弹出窗口阻止程序不会被触发。我需要状态为 true,因为我的网站需要知道用户是否已登录 Facebook,而无需刷新页面。 False 参数值意味着 FB 仅获取缓存的登录状态,如果用户仍在您的网站上时退出 Facebook,则这可能是错误的。

我该如何解决这个问题?

这是一些说明问题的代码

 $('.my-button').click(function () {

FB.getLoginStatus(function (response) {

if (response.status != 'connected') {

FB.login(function (r) {
if (r.status == 'connected') {
alert('logged in');
}
});
}

}, true);

});

最佳答案

这可能是因为当您将forceCheck传递给getLoginStatus时,回调被异步调用,从而切断了它与“click”事件的连接。浏览器或弹出窗口阻止程序无法在调用堆栈上找到用户启动的单击事件,因此会阻止弹出窗口。我目前也遇到同样的问题。

选项:

1)直接调用FB.login。

缺点:即使对于登录用户来说,弹出窗口也很丑陋。

2) 在使用 getLoginStatus 检测到用户未登录(或应用程序未授权)时,在 $('.my-button') 附近插入一个单独的登录按钮,可能带有一条消息,说明用户必须点击登录按钮才能与 Facebook 连接。在第二个按钮的点击处理程序中直接调用 FB.login()。

缺点:转化率-50

我现在将尝试 2) 并报告结果。

关于javascript - FB.getLoginStatus 触发浏览器弹出窗口阻止程序。我怎样才能阻止它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13850622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com