首页 文章

Facebook Connect禁用自动登录

提问于
浏览
1

我集成了图形api facebook connect但是如果我们登录到facebook,我们将自动登录到facebook连接的网站 . 我们是否有任何方式让用户点击fb“登录”,然后用户才能通过他们的fb帐户连接到该网站?

现在,用户自动登录该站点,无需选择是否要使用他们的Facebook帐户 . 如果他们想要从网站注销,他们需要从facebook完全注销,然后他们才能从facebook连接注销 .

任何人都可以帮助我或提供一些如何去做的提示?谢谢!

4 回答

  • 0

    我在最近的网站上遇到了同样的问题,并找到了克服它的方法 . 我的解决方案允许用户已经在他们的计算机上登录到facebook,但没有在我的网站上自动登录,然后他们可以使用Facebook登录按钮登录,最后当他们退出时,它们不会将他们从Facebook登录到他们的计算机上,就在我的网站上(就像Digg和facebook一样) .

    为此,我使用https://github.com/facebook/php-sdk/在PHP内检查是否存在与用户和网站的活动facebook会话(这将导致自动登录) . 如果有,我不会回应自动登录代码:

    FB.init({
    appId:'<?php echo $ facebook-> getAppId(); ?>”,
    session:<?php echo json_encode($ session); ?>,//当PHP已经拥有它时,不要重新获取会话
    status:true,//检查登录状态
    cookie:true,//启用cookie以允许服务器访问会话
    xfbml:true //解析XFBML
    });
    FB.Event.subscribe('auth.login',function()
    );

    而只是渲染我自己的Facebook登录按钮,将链接到“process-login.php” .

    process-login.php会设置自定义$ _SESSION变量,告诉我的网站有人被记录(无论是通过我自己的系统,还是通过facebook),然后重新加载引用页面(使用$ _SERVER ['HTTP_REFERER'])显示用户通过Facebook登录,因为我自己的$ _SESSION变量现已设置 . 要记录它们(没有完全记录它们的Facebook,只是我的网站),我只需要加载一个删除$ _SESSION变量的注销脚本 .

    example.php(在github上的php-sdk中)非常有助于找到我的解决方案,尽管我必须对其进行大量定制以使其适用于我现有的系统 . 它至少帮助我了解如何在PHP中访问facebook会话变量(在示例中存储在$ me中) .

    希望这可以帮助你,如果它仍然是一个问题,或在这种情况下它帮助其他人 .

    编辑:结果我在极少数情况下仍然遇到一些自动登录问题 . 为了解决这个问题,我删除了event.subscribe('auth.login'),并在订阅auth.login之前创建了一个调用以下函数的facebook按钮来检查登录状态 . 这是功能:

    function check_login_session(){
    FB.getLoginStatus(函数(r)的{
    如果(r.session){
    window.location ='/ process-login.php';
    }
    其他{
    FB.Event.subscribe('auth.login',function(response){
    window.location ='/ process-login.php';
    });
    的FB.login();
    }
    });
    }`

  • 1

    我有同样的问题,我猜你正在使用facebook提供的脚本 . 在这种情况下,您有一个与window.fbAsyncInit事件关联的函数 . 每次加载页面时都会发生这种情况 . 在这个方法的最后你有代码:

    FB.getLoginStatus(function(response) { statusChangeCallback(response); });

    函数statusChangeCallback验证用户的Facebook状态(已连接,已授权或未知) . 在这里,如果用户“已连接”,则将其登录到您的站点 . 那就是问题,你总是试图用Facebook登录用户 .

    这必须仅在点击时发生,因此您应该删除这些行

  • 3

    亲爱的,亲爱的,我想你已经让你的问题变得如此困惑 . 你的问题并没有说明你想要什么 . 至于我已经理解,我认为你想通过facebook连接将用户连接到你的网站,你想要当用户点击facebook注销时,它会自动从你的网站注销 . 如果我对您的问题的理解是正确的,那么只需让用户通过Facebook登录并在FB.Event.Subscribe事件中登录您的系统 . 使用以下代码登录按钮

    <fb:login-button perms='email' autologoutlink='true'>
    

    当用户允许您的Facebook帐户与您的网站连接时

    <div id="fb-root">
     <script>
       window.fbAsyncInit = function() {
       FB.init({appId: "Your APP ID",
                status: true,
                cookie: true,
                xfbml: true});
        FB.getLoginStatus(function(response) {
          if (response.session) {
            // Send here parameters that logins to your system through your website login system
    
          } else {
    
        }
        });    
        FB.Event.subscribe("auth.login", function(response) {
        window.location.reload();
          });
    FB.Event.subscribe("auth.logout", function(response) {
        window.location.reload();
    
        //Send the Parameters that logouts user from your website through your website logout system;
          });
           };
       (function() {
         var e = document.createElement("script");
         e.type = "text/javascript";
         e.src = document.location.protocol +
         "//connect.facebook.net/en_US/all.js";
         e.async = true;
         document.getElementById("fb-root").appendChild(e);
       }());
    

    并将上面的整个代码放在<body>标记之后

  • 0

    如果你有:

    FB.Event.subscribe('auth.login', function() {
       fbLogin(this);
    });
    

    试着评论它/ * fb.Event ..... * /

相关问题