【问题标题】:offline_access deprecation and scenarios 3 and 4offline_access 弃用和场景 3 和 4
【发布时间】:2012-04-24 21:15:49
【问题描述】:

每次阅读https://developers.facebook.com/roadmap/offline-access-removal/,我都比以前更加困惑。我正在寻找对场景 3 和 4(服务器端应用程序和客户端应用程序)下某些项目的一些说明

对于服务器端应用程序,它声明“如果在该用户仍有 60 天的有效 access_token 时进行调用,则第二次调用返回的 access_token 可能相同或可能已更改,但在任一如果到期时间将是新的 60 天。”

  • 这里提到的“呼叫”是什么?
  • 在初始 OAuth 流程期间发生的访问令牌的授权代码交换是否相同?
  • 或者是客户端部分下描述的端点调用将令牌更新到 60 天?
  • 如果是前者,那么在尝试更新令牌时授权码来自哪里?
  • 是与原始回调中的授权码相同还是我必须再次通过授权流程?

简而言之,服务器端应用程序能否不断更新 60 天令牌的生命周期?如果可以,那么如何?

关于客户端使用,该文档指出客户端必须进行端点调用,并传入(除其他外)应用程序的客户端 ID 和客户端密码。

  • 我对“客户端”的解释可能是错误的,但我考虑的是在 Web 浏览器中运行的基于 JavaScript 的客户端。
  • 如果这就是 Facebook 的想法,那么 JavaScript 代码真的应该知道客户端机密吗? (如果发送给客户,就不是什么秘密了。)

即便如此,它也表明 60 天的代币不能延长其寿命,并且必须首先获取一个新的 2 小时代币并用于获得一个 60 天的代币。这是文档的客户端部分,但此规则是否也适用于服务器端 60 天令牌?如果没有,那我再问一遍:如何在服务器端刷新 60 天令牌的生命周期?

最后,我脑海中一直萦绕的问题是:为什么 Facebook 采用了这种策略,而不是采用 OAuth 2 规范(Facebook 正在帮助定义的规范)中定义的刷新令牌???

编辑:再次阅读文档后的进一步想法/问题:

一开始它说“一个长期有效的过期时间,每次用户修改你的应用时都可以更新”。我最初的假设是更新它的方法是在文档的后面调用端点。但是,除了端点在“客户端”标题下描述的事实之外,它还声明“请注意,端点只能用于扩展短期用户 access_tokens。如果您传递的 access_token 具有长期存在的过期时间,端点将简单地将相同的 access_token 传回给您,而无需更改或延长过期时间。” (“长命”的错字来自 FB 自己的文档。)

好的,因此,如果该端点不能用于更新到期时间(并且我自己尝试使用该端点更新长期令牌的尝试证明了这一点),那么我如何更新长期有效的过期时间每次他们访问我的应用时的令牌?

没有人了解这应该如何工作吗?

【问题讨论】:

  • 我确实有同样的疑问。我很高兴我找到了这个问题,但是当我发现还没有人回答这个问题时,我所有的幸福都崩溃了。我不知道是我还是 Facebook 写文档真的很糟糕。

标签: oauth facebook-oauth


【解决方案1】:

在阅读了 Facebook 的文档(如第五次)并在 this question/answer 的帮助下,这是我的结论。

这里提到的“呼叫”是什么?

它引用 OAuth 调用来获取访问令牌。

是否与访问令牌的授权码交换相同 这发生在初始 OAuth 流程中?

是的,我相信就是这样。

或者是客户端部分下描述的端点调用 将令牌刷新到 60 天?

不,该端点仅对短期访问令牌有效。

它是来自原始回调的相同授权码还是我 是否需要再次通过授权流程?

您必须再次完成授权流程。

我怎样才能每次更新长寿命令牌的到期时间 他们访问我的应用?

无法使用客户端端点更新长期访问令牌。用户必须重新授权应用程序才能获得新的应用程序。 根据 Facebook 文档:

如果调用(OAuth 授权调用)在仍然存在有效的长寿命用户的情况下进行 该用户的 access_token,从这里返回的用户 access_token 第二次调用可能相同或可能已更改,但在任何一种情况下 过期时间将设置为较长的​​过期时间。

应用重新授权后,您将获得新的过期时间。 Facebook 可能会返回一个新的长期访问令牌,因此您应该获取它并将该信息替换为您已经拥有的那个。

结论: 似乎没有用户干预就无法更新长期访问令牌。要获得新的过期时间/访问令牌,他们必须重新授权您的应用。我的谦虚建议是,应该建议用户在到期日前几天重新授权。 此外,这个Facebook how-to 可以派上用场检查过期的访问令牌。

【讨论】:

    猜你喜欢
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 2012-03-02
    • 1970-01-01
    • 2021-11-26
    相关资源
    最近更新 更多