首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flutter: How to Refresh token when token expires to call?

Flutter: How to Refresh token when token expires to call?
EN

Stack Overflow用户
提问于 2021-04-22 12:51:14
回答 2查看 4.3K关注 0票数 2

我是flutter新手,我正在使用http包进行网络呼叫。如果请求200的响应码,我想刷新令牌并再次调用请求。如何使用http包获取此信息?我听说过dio包,但它对我来说很复杂。

代码语言:javascript
复制
User getUser(){

   final response = http.post(Uri.https(BASE_URL, '/api/user'), 
    headers: {'Authorization: Bearer $token'});

    if(response.statusCode == 200){
       return User.fromJson(jsonDecode(response.body)['user']);
    }
    else if(response.statusCode == 401){
      //refresh token and call getUser again     
    }

}
EN

回答 2

Stack Overflow用户

发布于 2021-04-25 17:06:25

您可以使用刷新标记,如下所示:

代码语言:javascript
复制
User getUser(){

   final response = http.post(Uri.https(BASE_URL, '/api/user'), 
    headers: {'Authorization: Bearer $token'});

    if(response.statusCode == 200){
       return User.fromJson(jsonDecode(response.body)['user']);
    }
    else if(response.statusCode == 401){
      //refresh token and call getUser again
      final response = http.post(Uri.https(BASE_URL, '/api/[YourAuthorizationEndpoint]'), 
    headers: {'grant_type': 'refresh_token', 'refresh_token': '$refresh_token'});
      token = jsonDecode(response.body)['token'];
      refresh_token = jsonDecode(response.body)['refresh_token'];
      return getUser();
    }

}
票数 9
EN

Stack Overflow用户

发布于 2021-07-31 20:47:43

您可以使用dart的http/retry包:

代码语言:javascript
复制
import 'package:http/http.dart' as http;
import 'package:http_retry/http_retry.dart';

final client = RetryClient(
   http.Client(), 
   retries: 1,
   when: (response) {
    return response.statusCode == 401 ? true : false;
   },
   onRetry: (req, res, retryCount) {
     if (retryCount == 0 && res?.statusCode == 401) {
        // refresh token
     }  
   },
);

try {
  final response = await client.get('http://www.example.com');
} finally {
  client.close();
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67206941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档