我正在编写一个从Flutter调用google fit rest api的应用程序。
我需要使用(https://pub.dev/packages/google_sign_in)与Google签名。我可以毫无问题地获取令牌(请参阅Did anyone manage to get the id token from google sign in (Flutter)),但是过期时如何获取新令牌?
我不想让用户每小时登录并获取新令牌
您可以通过两种方式执行此操作。
您可以使用API。
我不知道这是否是标准的,但是每次用户打开应用程序时您都可以执行silent login
,静默日志无需用户交互即可登录到用户帐户,这样您便有了一个新令牌。像这样:
Future<String> refreshToken() async {
print("Token Refresh");
final GoogleSignInAccount googleSignInAccount =
await googleSignIn.signInSilently();
final GoogleSignInAuthentication googleSignInAuthentication =
await googleSignInAccount.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
accessToken: googleSignInAuthentication.accessToken,
idToken: googleSignInAuthentication.idToken,
);
final AuthResult authResult = await auth.signInWithCredential(credential);
return googleSignInAuthentication.accessToken; // New refreshed token
}