我从firebase支持部门得到了以下响应,并能够使其正常工作:
通过Google服务配置Google登录FirebaseUI。json>文件问题是,如果您使用的OAuth客户端ID来自不同的>项目中,默认的\u web\u client\u id将配置不正确。它将是>指向新Firebase项目的自动生成web客户端id;我们>我不想这样。
在的步骤1中
https://developers.google.com/identity/sign-in/android/backend-
&燃气轮机;auth,我们调用#requestIdToken(getString(R.string.server\u client\u id))。输入(>);firebaseUI,这也已完成,此资源为“default\u web\u client\u id”->由谷歌服务生成。json。这需要改变。
因此,要解决此问题,您需要使用project中的web OAuth客户端ID>#1,您可以通过以下任一方式完成此操作:
更改google服务。json文件-您需要更改客户端id>项目#1中正确web客户端id的字段
您还需要将web客户端列入白名单(Auth>Sign-In Providers>Google)>OAuth从项目#1到项目#2
不要使用谷歌服务。json,以便您可以自己设置默认的\u web\u client\u id。我们为此制定了指南,请参见
here
。
以下是我实现这一目标的过程:
-
转到GCP控制台(>);选择旧项目(>);API和服务>资格证书
-
创建凭据(>);OAuth客户端ID
-
选择
Web应用程序
-
输入名称
-
将Javascript源和授权重定向URL保留为空
-
复制客户端id
-
打开firebase控制台
-
转到“身份验证”>登录方法>谷歌
-
将新客户端id列入白名单>添加(>);拯救
-
返回“设置”>将firebase添加到android应用程序
-
添加您的android软件包名称
-
将签名证书保留为空
-
单击注册应用程序
-
下载(&A);打开谷歌服务。json
-
在oauth\u客户端中,应用程序中的每个oauth客户端id都有一个条目(仅供参考,这些条目可在GCP控制台的API和服务凭据下查看)。
-
删除整个
oauth_client
标记并替换为
"oauth_client": [
{
"client_id": "<your_new_client_id>",
"client_type": 3
}
],
如果您需要任何其他oauth客户端,那么请确保白名单上的客户端位于顶部,因为这似乎是默认的。
-
&保存文件;复制到您的android应用程序模块中。
-
确保您具有以下依赖项:
-
项目根版本。格拉德尔
-
类路径的com。谷歌。gms:谷歌服务:4.0.0'
-
应用程序模块构建。格拉德尔
-
编译com。谷歌。firebase:firebase核心:16.0.0'
-
编译com。firebaseui:firebase ui验证:4.0.0'
-
&生成;运行项目
如果出现此错误(没有进一步的详细信息):
BasicNetwork.performRequest: Unexpected response code 400 for https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyAssertion?alt=proto&key=AIzaSyBJL6EO8vMEJpyWUCAKP8ZgH4LYR0Hrwpk
检查您的gradle Dependencies是否设置为上述版本(或更高版本)
如果出现此错误:
com.google.firebase.FirebaseException: An internal error has occurred. [ Invalid Idp Response:the Google id_token is not allowed to be used with this application. Its audience (OAuth 2.0 client ID) is <your-client-id>, which is not authorized to be used in the project with project_number: <your-project-number>. ]
尝试删除(&M);在firebase控制台上重新添加您的白名单客户端id。