google_sign_in Flutter插件总是返回空的服务器访问代码

6tr1vspr  于 2022-10-31  发布在  Go
关注(0)|答案(1)|浏览(148)

我有当前的身份验证工作流
1.用户通过Google OAuth2登录
1.然后向用户提供一个server_auth_code,他们将该代码发送到我的后端身份验证
1.在后端验证验证代码,并向用户发送JWT
我在Android SDK中使用了原始Java,但是Flutter看起来更好。但是现在在Android上使用google_sign_in插件时,我无法再检索serverAuthCore了,这个插件只想一直返回null。
我正在使用为Android指定的客户端ID,但是,我测试了Google也自动生成的WebApplication,但这是同一个问题(Null serverAutHCode)
这是我目前正在使用的代码:

/// Provides the `GoogleSignIn` class
import 'package:google_sign_in/google_sign_in.dart';

class GoogleLoginPage extends StatefulWidget {

  final String name = "Logging in with google.";

  late GoogleSignIn _googleSignIn;

  GoogleLoginPage() : super() {
    _googleSignIn = GoogleSignIn(
        scopes: ['https://www.googleapis.com/auth/userinfo.email',
        'https://www.googleapis.com/auth/userinfo.profile'],
        serverClientId: "XX-XXX.apps.googleusercontent.com"
    );
  }

  Future<void> fetchAuthToken() async {
    try {
      var response = await _googleSignIn.signIn();
      log(response?.serverAuthCode ?? "No server auth code");
      _googleSignIn.signOut();
    } catch (error) {
      print("ERR");
      print(error);
    }
  }

  @override
  State<GoogleLoginPage> createState() => GoogleLoginState();

}

此代码的输出为:[log] No server auth code
的问题:
我做错了什么吗?正如前面提到的,这是100%在我的java项目上使用Google Play服务SDK,所以我知道这与我的谷歌控制台配置无关。

z2acfund

z2acfund1#

好吧,我发现了问题所在:
它似乎是默认的谷歌登录插件flutter来在一个较旧的版本(如果我没记错,它是20. 0. 5)
我只是将版本更改为最新版本:
'com.google.android.gms:play-services-auth:20.2.0'
您可以通过编辑项目的build.gradle来完成此操作(在IntelliJ中,您打开build.gradle并点击右上角的“Open for editing in the android studio”(在android studio中打开以进行编辑),您需要在此处找到google_sign_in的gradle文件,并在此处更改导入,请记住在关闭之前点击android studio右上角的sync(同步))
而我开始像往常一样收到我的serverAuthCode,干杯!

相关问题