【问题标题】:Logout/switch-user on Facebook after deprecation of Offline Access Permission弃用离线访问权限后在 Facebook 上注销/切换用户
【发布时间】:2012-04-04 10:03:04
【问题描述】:

通过 Facebook deprecating offline access permissions 5 月 1 日,Web 应用程序可以轻松延长 OAuth 访问令牌的持续时间(60 天)。

但是,如果应用程序在网络上并且想要提供 “切换用户” 选项,通常是 注销 -> 登录,那么访问令牌就会失效,并且再也无法替代offline_access了。

问题:有没有办法保留有效的访问令牌(60 天)但仍然允许注销或多个用户在单个浏览器上登录,或者在请求时“强制登录提示”登录(让 Facebook 在登录页面提供 Switch 用户)?

还是鼓励我们不再提供注销选项?

【问题讨论】:

  • 让我问你这个问题:如果用户在 60 天内没有使用你的应用并且令牌过期了,你会怎么做?我的意思是,我认为鼓励您使用通过用户交互提供给您的令牌。
  • 当然,如果令牌过期,我们只是认为用户不再处于活动状态。但在我强调的场景中,切换用户可能会使令牌在几分钟后过期,而用户只想从她/他的浏览器上的会话中注销。

标签: facebook facebook-graph-api oauth


【解决方案1】:

我运行了一些测试,看起来无论我如何获取访问令牌、服务器端流或客户端流,即使我有两个令牌(来自两个流),当我调用 FB.logout ()(我假设这是您注销用户的方式)所有令牌都将失效。

在我看来,您必须选择自己喜欢的功能,切换用户或长期有效的令牌,除非我当然遗漏了什么。

不过,我可以为您提供一种变通方法,它并不理想,因为大多数变通方法一样,但它可能会让您享受两个世界: 在您的 UI 中,您可以让用户选择注销以切换用户,只需告诉他手动注销 facebook,然后当他单击您的注销时,只需在不使用 FB 的情况下将他从您的系统中注销.注销。 这样,您为该用户拥有的访问令牌不会失效,并且其他用户将能够登录。

【讨论】:

  • 感谢您的回答。如果没有更好的解决方案,这就是我计划“解决”它的方式......我认为 Facebook 的某个人应该接受这个
  • 祝你好运,如果我错过了更好的解决方案,我会关注这个问题,但我相信 Facebook 只是不希望你在不在上下文中查询他们的图表用户与您的应用的互动。
  • 当然,再次感谢您的回答。可能是我能得到的最好的。但是 Facebook 有推送 API 等,所以它显然是为稍微超出实时用户交互的范围而构建的。希望不是最近的战略变化!
  • 这也困扰着我。我们使用来自 facebook 的长期访问令牌(60 天)来离线使用图形 API(根据用户的请求),并且我们依靠 facebook 登录来对我们的站点进行身份验证。我想提供一个注销链接,但是由于这会使我们的令牌无效,因此确实没有像样的解决方案。目前,我们的注销链接会破坏我们的服务器端会话,但这并没有起到太大作用,因为如果用户使用有效的 facebook 会话返回我们的网站,我们会自动使用 javascript SDK 重新登录。
【解决方案2】:

出于安全原因,这可能不起作用,但您是否尝试过构建注销 URL 而不指定访问令牌?也就是例如:

    1234563
  • 如果您使用的是 JS SDK,您将无法使用需要访问令牌的 FB.logout()。相反,您可以提供自己的:

FB.provide('UIServer.Methods', {
    'auth.logout': {
        url: 'logout.php',
        transform: function(a) {
            var xdRelation = FB.UIServer.getXdRelation(a.params);
            a.params.next = FB.UIServer._xdResult(a.cb, a.id, xdRelation, true);
            return a;
        }
    }
});

如果执行上述代码,理论上它应该改变 FB.logout 的行为,不再传递 access_token。公平警告:我自己没有测试过。否则,只需将用户发送到http://facebook.com/logout.php?next=SOME_URL,看看是否可以在没有 access_token 的情况下使用。

【讨论】:

    猜你喜欢
    • 2015-07-16
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 2023-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多