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

Ale*_*ona 7 google-fit google-signin flutter

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

我需要使用(https://pub.dev/packages/google_sign_in)与谷歌签名。我可以毫无问题地获取令牌(请参阅是否有人设法从 google 登录 (Flutter) 获取 id 令牌)但是如何在过期时获取新令牌?

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

Jid*_*uru 9

您可以通过两种方式做到这一点。

  1. 您可以使用API

  2. 我不知道这是否是标准的,但您可以在silent login每次用户打开应用程序时执行此操作,静默日志会登录到用户帐户而无需用户交互,这样您就拥有了一个新令牌。像这样:

import 'package:google_sign_in/google_sign_in.dart';
 // you may only login with google, delete hide part if not
import 'package:firebase_auth/firebase_auth.dart' hide EmailAuthProvider; 

//...

Future<void> silentSignIn() async {
    try {
      final GoogleSignIn googleSignIn = GoogleSignIn();
      final GoogleSignInAccount? googleUser =
          await googleSignIn.signInSilently();  // silent login
      if (googleUser != null) {
        final GoogleSignInAuthentication googleAuth =
            await googleUser.authentication;
        final AuthCredential credential = GoogleAuthProvider.credential(
          accessToken: googleAuth.accessToken,
          idToken: googleAuth.idToken,
        );
        await FirebaseAuth.instance.signInWithCredential(credential);
        print('User silently signed in with Google.');
      } else {
        print('No user signed in silently.');
        // Optionally, redirect to a sign-in page
      }
    } catch (e) {
      print('Error during silent sign-in: $e');
      // Handle errors or redirect to a manual sign-in page
    }
  }
Run Code Online (Sandbox Code Playgroud)