【问题标题】:How to logout from facebook or destroy an active session using php?如何从 facebook 注销或使用 php 销毁活动会话?
【发布时间】:2013-02-20 15:31:11
【问题描述】:

我有一个应用程序要求通过 facebook 进行注册,但在用户进行注册之前,系统应首先确定是否存在 活动会话。如果用户登录到 facebook,它应该会自动注销以重新开始。

但这就是我卡住的地方。 SDK 仅允许用户在连接到您的应用程序时从 facebook 注销。它使用应用程序的访问令牌。但是,如果他还没有注册到您的应用程序怎么办?他们的注销意味着从您的应用程序中注销,而不是真正从 Facebook 中注销。

我的要求:

1.如何从 facebook 注销。

2.如何清除浏览器cookies?

不是针对特定应用,而是针对整个 Facebook 会话。

【问题讨论】:

    标签: facebook session logout


    【解决方案1】:

    使用 logout.php 网址。

    https://developers.facebook.com/docs/reference/php/facebook-getLogoutUrl/

    基本上,

     http://facebook.com/logout.php?next=YOUR_NEXT_URL_FOR_LOGOUT&access_token=USER_TOKEN
    

    【讨论】:

    • 您好,谢谢!但是要使用 getLogoutUrl() 函数,用户必须连接到您的应用程序。我需要的是从整个 Facebook 而不仅仅是从应用程序中注销。 :(
    • @sarenagay 那么我不太确定,` 系统应该首先确定是否存在活动会话。如果用户登录到 facebook,它应该自动注销以重新开始。`这也没有意义,如果会话处于活动状态,为什么要注销?除非多个用户从同一点进行交互...
    • 出于安全目的。我想我会选择重新认证而不是注销。非常感谢顺便说一句:)
    【解决方案2】:

    [来自 cmets] 但是要使用 getLogoutUrl() 函数,用户必须连接到您的应用程序。我需要的是从整个 Facebook 而不仅仅是从应用程序中注销

    如果用户连接到您的应用程序,则getLogoutUrl 方法提供的 URL 会执行此操作 - 将用户从您的应用程序(网络应用程序)从 facebook.com 注销.

    如果用户没有连接到您的应用程序,则您没有有效的用户访问令牌 - 然后无法退出 Facebook。显而易见的原因是,如果是这样,我访问的每个网站都可能以“偷偷摸摸”的方式将我从 Facebook 注销——而我并不主动想要这样,所以人们很快就会生气。

    如果用户已登录 facebook,则应自动注销以重新开始。

    如果这是出于安全考虑,那么您实际上是在寻找re-authentication,这可以使用auth_type 参数来完成,引用自文档:

    在安全性非常重要的应用中,您可能需要仔细检查某人的身份 - 可能是在他们在应用内进行购买之前,或使用它访问一些敏感的个人数据之前。 p>

    为防止用户可能会在设备处于登录状态或中间人劫持用户会话的情况下,重新身份验证会强制用户重新输入其 Facebook 密码,然后才能继续使用你的应用程序。

    请注意使用 服务器端 身份验证流程 - 因为在客户端流程中,使用 JS SDK,存在允许用户绕过重新输入密码的错误只需关闭仍然打开的弹出窗口:https://developers.facebook.com/bugs/248632218597467(已分配优先级:高,但仍收到“我们将跟进”回复还没有。)

    【讨论】:

    • 您好,非常感谢您回答并让我了解重新身份验证。这也是我的想法,但我只是有点希望我的问题能得到解决。至少我很确信这是不可能的,因为正如你所说,它会要求访问令牌,并且我无法完全控制用户从 fb 注销。
    【解决方案3】:

    1) 使用

    从 facebook 注销
    facebook=>getLogoutUrl();
    

    2) 使用 :

    清除会话
    $facebook->destroySession();
    

    示例:

    <a href="logout.php">Log Out</a>
    

    logout.php页面代码如下:

    <?php
    require 'facebook.php';
    $facebook->destroySession();
    header( "location:index.php" );
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      • 2014-01-19
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 2015-03-20
      相关资源
      最近更新 更多