每次阅读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 自己的文档。)
好的,因此,如果该端点不能用于更新到期时间(并且我自己尝试使用该端点更新长期令牌的尝试证明了这一点),那么我如何每次都更新长期令牌的过期时间他们访问我的应用程序?
没有人了解这应该如何工作吗?