Facebook注销/断开连接FB.login()在用户已经连接时调用

Facebook logout/disconnect FB.login() called when user is already connected

本文关键字:连接 用户 调用 注销 断开 FB login Facebook      更新时间:2023-09-26
<html>
    <head>
      <title>My Facebook Login Page</title>
    </head>
    <body>
      <div id="fb-root"></div>
      <script>
        window.fbAsyncInit = function() {
          FB.init({
            appId      : 'appID',
            status     : true,
            cookie     : true,
            xfbml      : true,
            oauth      : true,
          });
        };
        (function(d){
           var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
           js = d.createElement('script'); js.id = id; js.async = true;
           js.src = "//connect.facebook.net/en_US/all.js";
           d.getElementsByTagName('head')[0].appendChild(js);
         }(document));
      </script>
      <div class="fb-login-button">Login with Facebook</div>
    </body>
</html>

每次我点击[使用Facebook登录]按钮时,我都会JS Console看到这条消息"当用户已经连接时调用FB.login(("。

如何断开用户连接?

使用 FB.getLoginStatus 方法查找用户是否登录。

如果他们已登录,请尝试隐藏"登录"按钮。因为登录按钮将始终可见,并且在用户已登录时单击时不执行任何操作。

请参阅此链接以获取FB.getLoginStatus

阿比拉米的好答案,还有一个项目。

如何断开用户连接?

断开用户连接是通过类似于FB.login((的调用完成的,称为FB.logout(( 请参阅:http://developers.facebook.com/docs/reference/javascript/FB.logout/

这是没有人告诉任何人的解决方案,因为它突出了一个 Facebook 错误,所以准备好让我被投票否决......

FB.login(( 将在任何用户尝试注销后调用,如果 Javascript facebook 按钮上的 'autologoutlink' 参数设置为 true。

问题是这样的:

    <fb:login-button autologoutlink="true" width="200" max-rows="1"></fb:login-button>
(

((autologoutlink="true"(((

当设置为 true 时,登录按钮总是在用户注销后调用 (FB.login( 并且您已将 window.location 设置为其他页面,该页面被重定向回登录页面,FB.login 它被视为一个对象,就像应用程序开发人员一样。

在控制台上,您将看到FB.login((总是在用户注销后被调用,因为Javascript facebook登录按钮错误中的"autologoutlink"参数。

我现在担心那个投票给我的白痴,哈哈......

是的,这是 javascipt SDK 异步所有脚本的错误.js

秘诀是加载没有autologoutlink="true"参数的javascript Facebook按钮,但使用php sdk加载注销按钮。

在 php 中像这样的东西来放置一个 javascript sdk 登录按钮,然后发布一个 php 注销按钮来绕过 Facebook 代码中的异步错误:

$user = $facebook->getUser();
$logoutUrl=null;
$login_page='replace this for logged in page redirect'; //http://domain.com/loggedin
$logout_page='replace this for logged out page redirect'; //http://domain.com/loggedout
If ($user){
  $logoutUrl = $facebook->getLogoutUrl(array(
  'next'=>$logout_page
  ));
  $fb_login='<a href="'.$logoutUrl.'">Logout</a>';
}else{
  $fb_login='<fb:login-button width="200" max-rows="1"></fb:login-button>';
}

使用 JavaScript SDK 和

FB.Event.subscribe('auth.login', function(response) {
  window.location='$login_page';
});

和您页面上的某个位置

echo $fb_login;
所以你使用 Javascript 登录和

php 注销重定向方法,它会修补 Javascript 登录按钮 autologoutlink="true" 参数上的错误,我们不会使用,你只需要一个注销按钮图像和 css 和 FB.login(( 每次在 FB.logout(( 之后都不会再被调用。

我敢肯定,您可以看到如何缩短一大堆时间,但这是没有人愿意告诉您的修复程序。

现在对于我毫无意义的咆哮...

简而言之,如果他们在 PHP SDK 中运行一个完全不安全的会话,他们甚至无法使按钮工作,那么不要向他们寻求答案!

您被迫使用Facebook定义为异步脚本的内容,但是它们只是单方面的安全性,任何人都可以欺骗域或劫持不安全的会话,其中所有付款都由所述欺骗域处理,因此Facebook上的任何应用程序都是完全完全可破解的,他们知道这一点,他们只是没有找到一种方法来铲除您的BS,除了异步一词之外,这不是双向安全性是吗。

尝试设计任何使用异步 JAVASCRIPT 挂钩的东西,然后制作是安全的,他们总是可以责怪你,因为他们无法提供一个按钮,说明用户是否以任何简单的术语连接到今天的脚本和技术。

我现在在笑。

我想这就是为什么我们在堆栈溢出...

我个人认为Facebook javascript和php SDk应该很简单,而不是强迫设计师在社交设计中学习自己的疯狂方法,而只是提供一种方法,说是的,用户已登录,所以......或者不,用户不是这样...但是Facebook似乎认为他们是Adobe,并且与kak一起思考一切,让我们阅读关于他们个人设计哲学的四层楼的书籍,只留下任何示例和代码,你必须通灵才能调试,只有在你完成构建应用程序后两天才会改变,这花了十四年的时间,只是因为他们未能交付,而是喜欢听起来他们知道他们正在做什么来涵盖为删除所述错误而进行的如此多的修订。

就像土坯一样,如果它有效,我们就不必做它的设计课程,对吧?

但是,由于它是狗屎并且浪费了数十亿小时的人力资源,那么我相信在某些时候您将被迫为其中的资格付费,因为这意味着更多的钱,对吧?

我的意思是,您必须已经通过Facebook传递所有付款,以便他们可以远程编辑您的会话,因此您的应用程序因此,您的数据库可以进行付款。

TF的付款与Facebook有关,当您交付的内容是他们应该向您支付的费用并最终带来,保留和交付更多用户时。

与好莱坞一样,他们称盗版为互联网上的免费电影,而不是为你的产品免费广告付费,而好莱坞则收取 800 亿零小时的利息,禁止利息!

盗版是从他人那里赚钱,而不是奴隶制,并为此被起诉或实际为此付出代价。

记住这个讲座,它会对你很好。

我说了很多哈哈...

当一切清楚时,你会看到这条路把我们带到哪里。