我有当前的身份验证工作流
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,所以我知道这与我的谷歌控制台配置无关。
1条答案
按热度按时间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,干杯!