使用 google_sign_in Flutter 通过刷新令牌获取新令牌

Obtain a new token by refresh token with google_sign_in Flutter

我正在编写一个从 Flutter 调用 google fit rest api 的应用程序。

我需要使用 (https://pub.dev/packages/google_sign_in) 与 google 签约。 我可以毫无问题地获取令牌(参见)但是当令牌过期时如何获取新令牌?

我不想要求用户每小时登录并获取一个新令牌

您可以通过两种方式完成此操作。

  1. 您可以使用 API.

  2. 我不知道这是否是标准的,但你可以做一个 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
  }