我最近遇到了React Native和Redux的问题,同时实现了OAuth,这引起了一些令人头疼的问题 . 方案如下:
-
我在我的React Native应用程序中使用了Redux
-
用户登录并存储刷新令牌和访问令牌 .
-
在另一个组件的动作创建者中,用户需要使用短期访问令牌调用休息 endpoints .
-
但是,对于每个呼叫,用户需要调用像
getAccessToken()
这样的服务方法,它始终返回有效的访问令牌,如果令牌过期,它将更新它们并更新商店 .
Redux中的数据流是 strictly unidirectional ,这意味着,用户调用动作创建者,动作创建者将调用reducer,它将更改存储中的状态,组件将使用新状态重新呈现 . 但是,我无法将组件的状态绑定到访问令牌;每次用户想要进行休息呼叫时,她应该拨打 getAccessToken()
以确保她在发送之前收到有效的令牌 .
有关如何使用 React Native and Redux 实现此功能的任何建议?谢谢 .
1 回答
如何以你的方式做到:
致电
getAccessToken().then(token => myOtherCall(token))
第二次调用成功后,分配两个动作,一个到相应的reducer,结果是另一个,另一个保存新的令牌 .
我该怎么做:
使用redux-saga,我会设置一个每隔X秒刷新一次令牌的循环 . 如果请求因401状态代码而失败,我会刷新令牌并重试api调用 .