如何在 React Native 中处理 OAuth2 令牌刷新?
how handle OAuth2 token refresh in react native?
有任何处理令牌刷新的 React Native 库吗?或者我需要制定一个刷新令牌的时间表?如果是,iOS 允许调度在后台执行吗?或者我可以检查每个服务器响应如果不刷新令牌是否有效?
实现这个的最佳方法是什么?
当我遇到这个问题时,我想到了两种策略来处理令牌刷新 API:
1 - 刷新来自 API
的特定错误
您的服务器应发送一个 INVALID_TOKEN_ERROR
时刻,您可以在该时刻制作自己的 refreshToken(credentials)
。
我发现有趣的一种技术是 polyfill fetch
,其方式与本文中的类似:
Handling Failed HTTP Responses With fetch()
2 - 在应用启动时刷新
我目前在我的应用程序上所做的是在应用程序启动时刷新我的令牌,而不管令牌的生存时间如何。因此,除非您的用户让应用程序打开的时间比您的生存时间长,否则您应该不会遇到任何问题。
我使用 redux-persist 加载状态回调在应用启动时挂钩。
refreshToken(凭据)
如果使用fbsdk
刷新令牌功能非常简单:
import { AccessToken } from 'react-native-fbsdk'
[...]
AccessToken.refreshCurrentAccessTokenAsync()
.then((FBTokenObject) => {
let FBToken = FBTokenObject.accessToken
[refresh your own API token using FBToken]
)
如果您使用电子邮件和密码策略,您应该查看 react-native-keychain,以安全的方式将凭据保存在设备上。
结论
我没有在 API 错误时实施令牌刷新,因为我的令牌的生存时间是 5 天,我认为目前第二种策略已经足够好了。但是如果我的令牌的生存时间短于 2 天,我肯定会。
您还可以通过检查生存时间来提高性能,并根据值决定是否要刷新令牌,但在我看来,这并没有太大的好处。
有任何处理令牌刷新的 React Native 库吗?或者我需要制定一个刷新令牌的时间表?如果是,iOS 允许调度在后台执行吗?或者我可以检查每个服务器响应如果不刷新令牌是否有效?
实现这个的最佳方法是什么?
当我遇到这个问题时,我想到了两种策略来处理令牌刷新 API:
1 - 刷新来自 API
的特定错误您的服务器应发送一个 INVALID_TOKEN_ERROR
时刻,您可以在该时刻制作自己的 refreshToken(credentials)
。
我发现有趣的一种技术是 polyfill fetch
,其方式与本文中的类似:
Handling Failed HTTP Responses With fetch()
2 - 在应用启动时刷新
我目前在我的应用程序上所做的是在应用程序启动时刷新我的令牌,而不管令牌的生存时间如何。因此,除非您的用户让应用程序打开的时间比您的生存时间长,否则您应该不会遇到任何问题。
我使用 redux-persist 加载状态回调在应用启动时挂钩。
refreshToken(凭据)
如果使用fbsdk
刷新令牌功能非常简单:
import { AccessToken } from 'react-native-fbsdk'
[...]
AccessToken.refreshCurrentAccessTokenAsync()
.then((FBTokenObject) => {
let FBToken = FBTokenObject.accessToken
[refresh your own API token using FBToken]
)
如果您使用电子邮件和密码策略,您应该查看 react-native-keychain,以安全的方式将凭据保存在设备上。
结论
我没有在 API 错误时实施令牌刷新,因为我的令牌的生存时间是 5 天,我认为目前第二种策略已经足够好了。但是如果我的令牌的生存时间短于 2 天,我肯定会。
您还可以通过检查生存时间来提高性能,并根据值决定是否要刷新令牌,但在我看来,这并没有太大的好处。