Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在flatter中使用刷新令牌?_Flutter_Dart - Fatal编程技术网

Flutter 如何在flatter中使用刷新令牌?

Flutter 如何在flatter中使用刷新令牌?,flutter,dart,Flutter,Dart,我正在开发一个flatter应用程序,其中的访问令牌会定期更新指定的过期期限。我需要知道如何做到这一点。 后端在我的项目中是这样的- 首先,我们向应用程序发出登录请求,在这里,我将获得访问和刷新令牌以及访问令牌的有效期。 下面是我如何执行登录请求并将其保存在SharedReferences中的caode 这就是我对刷新令牌进行post请求的方式 Future refreshToken(BuildContext上下文)异步{ 打印(“内部刷新令牌”); SharedReferences p

我正在开发一个flatter应用程序,其中的访问令牌会定期更新指定的过期期限。我需要知道如何做到这一点。 后端在我的项目中是这样的-

  • 首先,我们向应用程序发出登录请求,在这里,我将获得访问和刷新令牌以及访问令牌的有效期。 下面是我如何执行登录请求并将其保存在SharedReferences中的caode
  • 这就是我对刷新令牌进行post请求的方式
Future refreshToken(BuildContext上下文)异步{
打印(“内部刷新令牌”);
SharedReferences prefs=等待SharedReferences.getInstance();
String accessToken=prefs.getString('accessToken');
String refreshToken=prefs.getString('refreshToken');
字符串url=Constant.refreshUrl;
var-jsonResponse;
映射头={'Content-Type':'application/json','Client Id':'dishuumapp:dishumm:bd3c59bf-fa01-4fc7-aed1-4330d59d7bfd','Authorization':'Bearer$accessToken'};
var body=json.encode({'refreshToken':refreshToken});
final response=wait http.post(url,headers:headers,body:body);
如果(response.statusCode==200){
jsonResponse=json.decode(response.body);
if(jsonResponse!=null){
prefs.setString('Accesstoken',jsonResponse['data']['token']['Accesstoken']);
prefs.setString('Refreshtoken',jsonResponse['data']['token']['Refreshtoken']);
prefs.setInt('ExpirationPeriod',jsonResponse['data']['token']['ExpirationPeriod']);
}
}
}
  • 最后,我需要知道我的方法是否正确,如果不正确,我可以得到指导。 多谢各位
Future phoneLogin(String phone, BuildContext context) async {

  SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
  String url = Constant.loginUrl;
  Map<String, String> headers = {'Content-Type' : 'application/json', 'Client-Id' : 'dishuumapp:dishumm:bd3c59bf-fa01-4fc7-aed1-4330d59d7bfd'};
  var body = json.encode({'phone' : phone, 'notificationToken' : 'mockToken:APA91bHwJIAt27jvfzeJW2ElwJne-2BC2LrtSqq1l1FFz5TwnrxzNpYnVCN1Rr-PVKJLUe21ajtWl8lZltJ29fYZ3V2R9SbAO4rHc44j7c8IzaoUatXWu'});
  var jsonResponse;
  final response = await http.post(url,
      headers: headers,
      body: body
  );

  if(response.statusCode == 200) {
    print('Inside body');
    jsonResponse = json.decode(response.body);
    print("Response Status : ${response.statusCode}");
    print("Response Status : ${response.body}");

    if(jsonResponse != null){
      sharedPreferences.setBool('isNewUser', jsonResponse['data']['isNewUser']);
      sharedPreferences.setString('UserId', jsonResponse['data']['customerUUID']);
      sharedPreferences.setString('UserName', jsonResponse['data']['userName']);
      sharedPreferences.setString('Accesstoken', jsonResponse['data']['token']['Accesstoken']);
      sharedPreferences.setString('Refreshtoken', jsonResponse['data']['token']['Refreshtoken']);
      sharedPreferences.setInt('ExpirationPeriod', jsonResponse['data']['token']['expirationperiod']);
      checkValidity();
      var user = sharedPreferences.getBool('isNewUser');
      if(user == true){
        Navigator.pushReplacement(context, new MaterialPageRoute(builder: (context)=> InterestScreen()));
      } else {
        Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (BuildContext context) => DashboardScreen(context)), (Route<dynamic> route) => false);
      }
    }

  }

  print("Response Status : "+response.body);

}
void checkValidity() async {
  print("Checking Validity");
  SharedPreferences prefs = await SharedPreferences.getInstance();
  var expiry = prefs.getInt('ExpirationPeriod') ?? 'ExpirationPeriod';
  Future.delayed(Duration(milliseconds: expiry), (){refreshToken(context);});
}
Future refreshToken(BuildContext context) async {
  print("Inside Refresh Token");
  SharedPreferences prefs = await SharedPreferences.getInstance();
  String accessToken = prefs.getString('Accesstoken');
  String refreshToken = prefs.getString('Refreshtoken');
  String url = Constant.refreshUrl;
  var jsonResponse;
  Map<String, String> headers = {'Content-Type' : 'application/json', 'Client-Id' : 'dishuumapp:dishumm:bd3c59bf-fa01-4fc7-aed1-4330d59d7bfd', 'Authorization' : 'Bearer $accessToken'};

  var body = json.encode({'refreshToken' : refreshToken});
  final response = await http.post(url, headers: headers, body: body);

  if(response.statusCode == 200){
    jsonResponse = json.decode(response.body);
    if(jsonResponse != null){
      prefs.setString('Accesstoken', jsonResponse['data']['token']['Accesstoken']);
      prefs.setString('Refreshtoken', jsonResponse['data']['token']['Refreshtoken']);
      prefs.setInt('ExpirationPeriod', jsonResponse['data']['token']['expirationperiod']);
    }
  }


}