首页 > 解决方案 > Flutter Google-SignIn 通过 Flutter idToken 问题

问题描述

我正在尝试从我的客户端 Flutter 应用程序获取一个 idToken 以发送回我的后端进行验证,问题是我要么没有得到 idToken,而是得到一个“instanceOfGetIDToken”或类似的东西,或者它吐出一个令牌与其链接的 Firebase 应用程序没有任何关系,我很困惑,因为用户出现在应用程序的 Firebase 控制台中,但同意屏幕提到的是 idNumber 而不是名称,当我检查 JWT 时,它有点好的信息,但发行人和一切都不一样?

final GoogleSignIn _googleSignIn = GoogleSignIn();
final FirebaseAuth _auth = FirebaseAuth.instance;
Future<FirebaseUser> _handleSignIn() async {
  final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
  final GoogleSignInAuthentication googleAuth = await googleUser.authentication;

  final AuthCredential credential = GoogleAuthProvider.getCredential(
    idToken: googleAuth.idToken,
  );

  final FirebaseUser user = (await _auth.signInWithCredential(credential)).user;
  print(credential);
  return user;
}

标签: firebaseflutterfirebase-authenticationgoogle-signin

解决方案


用这个怎么样?

Future<FirebaseUser> _handleSignIn() async {
  final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
  final GoogleSignInAuthentication googleAuth = await googleUser.authentication;

  final AuthCredential credential = GoogleAuthProvider.getCredential(
    idToken: googleAuth.idToken,
    accessToken: googleAuth.accessToken, 
  );

  final FirebaseUser user = (await _auth.signInWithCredential(credential)).user;

  print(user);
  return user;
}

推荐阅读