我查看了很多与该主题相关的帖子,但没有一个能够解决我的问题,所以这里是: 我使用 google_sign_in 能够通过 Gmail 帐户进行身份验证,而无需通过 firebase。一切都很顺利,我很好地检索了用户信息,但令人担忧的是,无论我如何操作,我的 idToken 的值都是 null。但是,我确实通过谷歌控制台注册了我的应用程序,这是我的代码:
final GoogleSignInAccount user = await googleSignIn.signIn();
GoogleSignInAuthentication googleSignInAuthentication = await user.authentication;
print('======== Google auth ===========');
print(googleSignInAuthentication.accessToken);
print(googleSignInAuthentication.idToken);
print('===================');
我很好地获取了访问 token ,但 token id 为空,我想知道:
- 当您拥有自定义 API 时,是否可以在不通过 Firebase 的情况下检索 idToken?
- 如果没有,在哪一部分输入的方法可以检索此 token ?
最佳答案
是的,你可以。
我很长时间以来一直在使用 PHP 来处理 google-auth token 验证。
这是针对 google_sign_in:^4.4.2
创建一个 GCP 项目: https://console.cloud.google.com/projectcreate
下一步转到https://developers.google.com/identity/sign-in/web/sign-in并选择配置项目,客户端为Android。 输入包名称和 SHA1
生成 SHA1 签名证书。
在终端中执行(分配密码和一些其他参数)
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias androiddebugkey
通过上述步骤,您将获得一个
key.jks
文件。在 android 下的
android/app/build.gradle
中添加以下设置:signingConfigs { debug { storeFile file('key.jks') storePassword 'epynic' keyAlias 'androiddebugkey' keyPassword 'epynic' } } buildTypes { debug { signingConfig signingConfigs.debug } }
storeFile file('/home/epynic/key.jks')
- 步骤 2 中生成的 key 文件的路径storePassword 'epynic'
&keyPassword 'epynic'
用于在步骤 2 中生成 key 的密码。最终执行
keytool -keystore key.jks -list -v
,在输出中您将获得 SHA-1 指纹。在
AndroidManifest.xml
文件的package=
属性下查找您的包名称。
关于android - flutter google_sign_in 在没有 firebase 的情况下获取 id token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68964747/