Android身份验证错误:"GetToken失败,状态代码为:INVALID_AUDIENCE"

Jus*_*tin 14 android oauth firebase firebase-authentication google-signin

关于这个模糊的错误代码已经有几个问题,但没有人为我解决这个问题,所以我会再试一次.首先,这是用于登录的样板代码.

      GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestEmail()
        .requestServerAuthCode("web app client ID copied from Dev API Console", false)
        .build();


  mGoogleApiClient = new GoogleApiClient.Builder(this).enableAutoManage(this, this).addApi(Auth
        .GOOGLE_SIGN_IN_API, gso).build();

  Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
  startActivityForResult(signInIntent, RC_SIGN_IN);
Run Code Online (Sandbox Code Playgroud)

使用此代码,我得到一个对话框,可以选择适当的用户帐户.好极了!但是,然后我在onActivityResult中获取了一个已取消的代码,因此我检查了logcat并注意了标题中的错误消息.然后我搜索有这个问题的其他人,但是我无法弄清楚我的问题是什么.

那么让我们从其他帖子中查看常见问题.

  • Firebase控制台显示我的应用程序已使用正确的SHA-1和SHA-256指纹进行了注册
  • 发布和调试版本都使用相同的密钥库
  • 在Google API管理器中,我的"OAuth许可屏幕"已配置完毕
  • 我还验证了授权重定向URI的域名
  • 我已经重新下载了Firebase GoogleServices.json文件,只是为了确定
  • 没有包名称问题.实际上,Firebase Analytics在这个应用程序中运行得很好
  • 在Play商店开发控制台中,我的OAuth客户端显示在"设置 - > API访问"中
  • 我的Firebase项目在Play商店开发控制台"关联帐户"设置部分中链接
  • 我已经等了10个小时,只是为了看看Google的后端是否需要时间来设置它

对于可搜索性,在标题中的logcat错误消息之后,我得到以下logcat打印.

你有错误的OAuth2相关配置,请检查.详细错误:INVALID_AUDIENCE

Jus*_*tin 2

您的 Web 客户端 ID 必须在与 Firebase 相同的用户帐户中生成,而不是在 Play 商店帐户中生成。就我而言,这两个帐户是分开的,Google 会抛出此错误,而不是正确链接信息。我的 Firebase 帐户已链接到我的 Play 商店帐户,但这显然并不意味着 Web 客户端 ID 将被共享。我尝试了一些其他解决方案,例如链接 API Manager 帐户,但这也不起作用。您必须在 Firebase 在与您的 Firebase 帐户相同的 API Manager 帐户中使用的同一个项目中创建 Web 客户端 ID。

  • 如何在 firebase 中创建网站客户端 ID? (2认同)