gpt4 book ai didi

facebook - FB.getLoginStatus() 在 Safari 上被阻止后的 FB.login()

转载 作者:行者123 更新时间:2023-12-02 07:04:40 29 4
gpt4 key购买 nike

我希望用户在单击我网页上的几个按钮之一时能够将一些图像发布到他们的 Facebook 页面。

<script>
FB.getLoginStatus(function(response)
{
if ( response && response.status == 'connected' )
{
postPhotosToFacebook();
}
else
{
FB.login(function(response)
{
if ( response && response.status == 'connected' )
{
postPhotosToFacebook();
}
},
{
scope: 'publish_actions'
});
}
}, true);
</script>

这是非常简单的代码。它会检查用户是否已登录。如果是,则会将图片发布到 Facebook。如果未登录,则会运行 FB.login(),这会弹出一个窗口,要求用户登录 Facebook 并为应用程序授予适当的权限。登录完成后,如果用户成功登录并批准了权限,则应用程序将执行与上述相同的操作,将照片发布到 Facebook。

尽管如此,FB.login() 弹出窗口似乎在大多数浏览器上被阻止。这是为什么?

我见过的一些方法建议您只需检查用户在加载页面时是否已登录。但这并不是在所有情况下都能正常工作,因为用户可以轻松地将浏览器选项卡切换到 Facebook 并登录/注销。因此,然后回到您的网络应用程序页面,它可能会认为您已连接/断开连接,但事实恰恰相反。

因此,每次我想发布内容时,我都必须检查登录状态,并为用户提供登录的选项(如果他们没有登录)。如果我放弃 FB.getLoginStatus() 并简单地运行 FB.login() 如果用户在加载页面时未登录,如果他们切换到 Facebook,然后登录,然后返回到网络应用程序页面,当他们单击按钮时,它将尝试运行 FB.login() ,但您会收到 Javascript 错误,因为用户现在已经登录.

如何解决这个问题?

最佳答案

而不是调用异步方法FB.getLoginStatus() ,只需检查一下 FB.getUserID()不为 null、未定义或 0。

var userID = FB.getUserID();
if(!!userID){
//user is logged in
} else {
//user is not logged in so call
}

关于facebook - FB.getLoginStatus() 在 Safari 上被阻止后的 FB.login(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18156311/

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