android - flutter google_sign_in 在没有 firebase 的情况下获取 id token

标签 android flutter dart google-signin

我查看了很多与该主题相关的帖子,但没有一个能够解决我的问题,所以这里是: 我使用 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('===================');

这是它返回给我的内容: enter image description here

我很好地获取了访问 token ,但 token id 为空,我想知道:

  • 当您拥有自定义 API 时,是否可以在不通过 Firebase 的情况下检索 idToken?
  • 如果没有,在哪一部分输入的方法可以检索此 token ?

最佳答案

是的,你可以。

我很长时间以来一直在使用 PHP 来处理 google-auth token 验证。

这是针对 google_sign_in:^4.4.2

The Github Sample Project

  1. 创建一个 GCP 项目: https://console.cloud.google.com/projectcreate

  2. 下一步转到https://developers.google.com/identity/sign-in/web/sign-in并选择配置项目,客户​​端为Android。 输入包名称和 SHA1

生成 SHA1 签名证书。

  1. 在终端中执行(分配密码和一些其他参数)

    keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias androiddebugkey

  2. 通过上述步骤,您将获得一个 key.jks 文件。

  3. 在 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 的密码。

  4. 最终执行keytool -keystore key.jks -list -v,在输出中您将获得 SHA-1 指纹。

  5. AndroidManifest.xml 文件的 package= 属性下查找您的包名称。

关于android - flutter google_sign_in 在没有 firebase 的情况下获取 id token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68964747/

相关文章:

Android - 用颜色部分填充路径

android - 使用图层列表不包裹父屏幕的背景可绘制

api - 在Flutter中如何使用“Multi Image Picker”选择图像后如何获取图像路径?

firebase - 如何确保只有一个帐户可以从一部手机登录 flutter 应用程序

dart - 如何知道何时加载组件?

java - 安装错误 : INSTALL_FAILED_INSUFFICIENT_STORAGE

android - 新电子邮件到达时未通知实现 MessageCountListener 的服务

flutter - BottomAppBar float 操作按钮缺口/插图不透明

flutter - 在 Flutter BLoC 架构中放置自定义辅助类的位置

google-maps - 使用 Flutter 围绕谷歌地图标记中心相机位置