在Flutter中使用google_sign_in时获取idToken 'null'

kpbwa7wx  于 2023-03-24  发布在  Flutter
关注(0)|答案(3)|浏览(338)

我正在使用google_sign_in插件。
它工作得很好,但我有一个问题。
我需要将idToken发送到后端服务器以验证用户。
但是IdToken在Google Sign响应中为null。
代码很简单

final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
  final GoogleSignInAuthentication googleAuth =
      await googleUser.authentication;
  print("Printing google user info");
  print(googleAuth.accessToken);
  print(googleAuth.idToken);
  print(googleUser.displayName);

其他属性具有正确的值。但idToken为null
我在谷歌上搜索了一下,说我需要网络客户端ID。
所以我做了
final _googleSignIn = GoogleSignIn(clientId: webClientId);
你们能帮忙吗?
我错过什么了吗?

9avjhtql

9avjhtql1#

我面对这个问题两天了,最后。(在我的情况下)这个解决方案奏效了。
https://firebase.flutter.dev/docs/installation/android#installing-your-firebase-configuration-file

  • com.google.gms:google-services作为依赖项添加到android/build.gradle
dependencies {
    // ... other dependencies
    classpath 'com.google.gms:google-services:4.3.8'
  }
}
  • apply plugin: 'com.google.gms.google-services'添加到/android/app/build.gradle
apply plugin: 'com.google.gms.google-services'
juud5qan

juud5qan2#

在尝试对用户进行身份验证之前,必须像下面这样指定作用域

GoogleSignIn _googleSignIn = GoogleSignIn(
            scopes: [
                'email',
                'https://www.googleapis.com/auth/contacts.readonly',
                "https://www.googleapis.com/auth/userinfo.profile"
            ],
        );

然后可以请求用户进行身份验证。要获取isToken,请调用此方法

GoogleSignInAuthentication googleSignInAuthentication = await result.authentication;

如果你已经在云控制台中正确配置了项目,你应该没有问题地获得ID

js4nwp54

js4nwp543#

对我来说,我从firebase项目中删除了谷歌登录提供程序(完全删除而不是禁用它),并删除了所有未使用的oauth 2.0服务,包括web应用程序,然后重新启用谷歌登录提供程序,并使用flutter-fire重新初始化firebase项目,它应该工作

相关问题