你好 @simon,感谢你的回复。让我更详细地解释一下我们的情况。
我们正在构建一个移动应用程序,该应用程序依赖于 Discourse 端点的后端逻辑。当用户通过应用程序登录时,登录数据会通过 session.json 发送到 Discourse API,该 API 会返回一个 cookie。然后,此 cookie 用于将 webview 重定向到 /user-api-key/new,提示用户批准授权。批准后,有效负载将被解密为 API 密钥。
在这种情况下,我们可以将 API 密钥用作移动应用程序中的全局令牌来访问其他 Discourse 端点。但是,当用户注销时,令牌应从全局状态中删除,以便他们无法访问创建新主题等端点。
我的问题来自这个主题:我们如何检查用户是否已经拥有 user_api_keys 并且它们是否仍然有效?如果密钥存在且有效,用户登录后应能够使用它们。如果不是,用户将需要创建新的 user_api_keys,这需要 webview 中的批准。
这是我面临的主要问题。
我考虑的另一个解决方案是,基于 如何通过 API 检索用户 API 密钥值 的帖子,将 API 密钥存储在我们的移动应用程序数据库中。
我还参考了 无需用户批准即可生成用户 API 密钥 - #2 by simon 的帖子,我最初查看该帖子是为了实现 API 密钥。但是,问题仍然存在:当我在 /admin/api/keys 中检查时,我们无法检索数据库中已保存的 API 密钥的值,也无法获取每个用户的 API 密钥。我认为,对于此实现,我们需要将 API 密钥存储在自己的数据库中。