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