gpt4 book ai didi

android - 使用刷新 token 在访问 token 过期之前刷新访问 token

转载 作者:行者123 更新时间:2023-12-05 03:37:28 27 4
gpt4 key购买 nike

我正在开发一个应用程序,它使用 OAuth - 基于 token 的身份验证。

考虑到我们拥有访问和刷新 token ,这就是流程的样子。

  1. Api call -> intercepter appends access-token -> api returns 200
  2. Api call -> intercepter appends expired access-token -> api returns401 -> intercepter refreshes token using refresh token ->interceptor retries same req -> returns 200
  3. Api call -> intercepter appends expired access-token -> api returns401 -> intercepter refreshes token using refresh token(refresh tokenis also expired) -> prompt guest to sign-in -> guest signed-in ->retry request

这一切都很好用 - 我正在考虑对其进行一些优化,即我不想调用 api 并等待 401 返回。而是事先检查 token 是否过期,获取新的访问 token ,然后使用有效 token 调用 api。

这种使用 android 系统时间计算 token 到期时间的方法可能有效 - 但有时当用户更改 android 时间时可能会被误用。

想知道是否有更好的解决方案来避免基于android系统时间的时间过期问题。

最佳答案

即使您在代码中添加了这样的检查,您仍然需要您在问题中提供的流程(因此捕获 401 并相应地刷新 token )。这是因为,正如您所注意到的,客户端设备上的时间设置可以更改,或者客户端和服务器之间可能存在轻微的时钟偏差(因此不会有意篡改时间设置)。

只有当您有权访问访问 token 和刷新 token 的到期时间时,您在 API 调用之前检查到期时间的方法才会起作用。因此,要么您收到该信息以及 token 并将其持久化,要么使用 JWT 并且您可以轻松检查过期时间。

就个人而言,我不会添加这样的检查,除非有一些强有力的论据(例如,您知道您的应用程序将主要用于连接速度较慢的远程位置,并且您希望将流量限制在最低限度,等等。 ).您介绍的流程很常见,并且运行良好。

关于android - 使用刷新 token 在访问 token 过期之前刷新访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69286993/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com