【问题标题】:How to logout using OAuth2 Facebook client flow?如何使用 OAuth2 Facebook 客户端流程注销?
【发布时间】:2013-01-03 23:10:52
【问题描述】:

如何使用 oauth2 客户端流程从 facebook 应用程序中注销?

我在官方文档中找不到任何方法:http://developers.facebook.com/docs/authentication/

【问题讨论】:

  • 我想你可以试试 PHP-SDK example 只是为了检查 getLogoutUrl() 的样子。或者查看它是如何形成的here

标签: facebook facebook-graph-api oauth


【解决方案1】:

您可以通过调用 FB.logout 使用 Javascript SDK 执行此操作。见https://developers.facebook.com/docs/reference/javascript/FB.logout/

但是,如果不使用官方 SDK 之一,我不确定如何做到这一点。

【讨论】:

    【解决方案2】:

    看来您真的不需要注销,因为用于客户端流程的 webview 不存储已登录的用户。

    【讨论】:

      【解决方案3】:

      如果您使用新的 PHP-SDK,您需要从 JavaScript SDK 调用 FB.logout,并销毁服务器上的用户会话,因为新的 PHP SDK 将用户 ID 和访问令牌存储在PHP 会话。

      我用:

      $_SESSION = array();
      session_destroy();
      

      【讨论】:

        【解决方案4】:

        将以下内容添加到您网站页面的最开头

        session_start();
        
        if($_GET['logoutfrmfb']=="logout")
        {
           unset($_SESSION['fb_{your app id}_code']);
           unset($_SESSION['fb_{your app id}_access_token']);
           unset($_SESSION['fb_{your app id}_user_id']);
        }
        

        在 src/base_facebook.php 中查找并编辑以下行(可能是第 506-515 行)

          public function getLogoutUrl($params=array()) {
         return $this->getUrl(
           'www',
           'logout.php',
           array_merge(array(
             'next' => $this->getCurrentUrl().'?logoutfrmfb=logout',
             'access_token' => $this->getAccessToken(),
           ), $params)
           );
          }
        

        为我工作!

        【讨论】:

          【解决方案5】:

          使用 FB.getLoginStatus 和 FB.logout JavaScript 函数。

          【讨论】:

          • 投票给负分的人:我在实际的现场实施中使用了这些功能。
          猜你喜欢
          • 2018-10-25
          • 2018-10-26
          • 2018-12-27
          • 2019-10-14
          • 1970-01-01
          • 2017-06-10
          • 2021-12-22
          • 2012-07-13
          • 2011-12-27
          相关资源
          最近更新 更多