【发布时间】:2020-05-18 20:49:38
【问题描述】:
我正在构建一个使用 spotify web api 的反应原生应用程序。我正在使用授权代码流来授权用户。首先,我得到一个授权码,可用于获取访问令牌和刷新令牌。一切正常!
问题是:访问令牌仅在有限的时间内有效。这就是刷新令牌的用武之地。我理解这个概念,但我对如何实现这一点感到头疼。
假设用户打开应用程序,请求访问令牌并使用它一段时间。然后,用户关闭应用程序。 15 分钟后,用户再次打开应用程序。访问令牌现已过期,因此我需要申请新的访问令牌。
我提出了几个“解决方案”。有人可以指出正确的解决方案吗?
解决方案 1: 每次用户打开应用程序时,我都会请求一个新的访问令牌并使用它。问题:当用户使用应用程序的时间超过访问令牌的有效时间时,我将不再工作。
解决方案 2: 我对每个请求都使用存储在安全存储中的访问令牌。当请求返回“访问令牌无效”时(我不知道确切的错误代码,但你们知道我的意思),我用存储的刷新令牌请求一个新的访问令牌,然后我再次发送上一个命令(使用新的访问令牌)。但我的问题是:我可以使用某种“包装函数”来检查请求的响应,如果响应是“访问令牌无效”,它会自动请求一个新的访问令牌并再次运行之前的请求。
【问题讨论】:
-
不确定是否有帮助,但我在
fetch()周围写了一个包装器,正是这样做的:npmjs.com/package/fetch-mw-oauth2
标签: react-native oauth spotify