Android &引用;开发人员错误:此应用程序配置错误;Google使用白名单上的客户端id登录firebase
我正在尝试在我的android应用程序上迁移到firebase auth。包名和SHA1当前与旧的应用程序引擎项目(我不想升级到firebase)关联,因此我无法将SHA1指纹添加到我的新firebase项目中。app engine项目目前正在生产中,因此我无法删除android客户端ID或删除该项目。这里的文档说,我应该能够将旧appengine项目的客户机id列为白名单。但是,当我执行此操作,然后尝试使用firebase auth通过google登录应用程序时,我收到以下错误Android &引用;开发人员错误:此应用程序配置错误;Google使用白名单上的客户端id登录firebase,android,firebase,google-app-engine,firebase-authentication,Android,Firebase,Google App Engine,Firebase Authentication,我正在尝试在我的android应用程序上迁移到firebase auth。包名和SHA1当前与旧的应用程序引擎项目(我不想升级到firebase)关联,因此我无法将SHA1指纹添加到我的新firebase项目中。app engine项目目前正在生产中,因此我无法删除android客户端ID或删除该项目。这里的文档说,我应该能够将旧appengine项目的客户机id列为白名单。但是,当我执行此操作,然后尝试使用firebase auth通过google登录应用程序时,我收到以下错误“开发人员错误:
“开发人员错误:此应用程序配置错误。请在firebase控制台中检查您的SHA1和包名。”
我也尝试过这里的说明,其中包括将GoogleSignInOptions
对象传递到AuthUI生成器中,并使用相应项目中的web客户端id,如下所示:
private void StartLoginActivity() {
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken("<my-client-id>.apps.googleusercontent.com")
.requestEmail()
.build();
List<AuthUI.IdpConfig> providers = Arrays.asList(
new AuthUI.IdpConfig.EmailBuilder().build(),
new AuthUI.IdpConfig.GoogleBuilder().setSignInOptions(gso).build());
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setAvailableProviders(providers)
.build(),
RC_SIGN_IN);
}
private void-oginactivity(){
GoogleSignenOptions gso=新建GoogleSignenOptions.Builder(GoogleSignenOptions.DEFAULT\u登录)
.requestIdToken(“.apps.googleusercontent.com”)
.requestEmail()
.build();
列表提供程序=Arrays.asList(
新建AuthUI.IdpConfig.EmailBuilder().build(),
新的AuthUI.IdpConfig.GoogleBuilder().setSignInOptions(gso.build());
startActivityForResult(
AuthUI.getInstance()
.CreateSignInEntBuilder()
.setAvailableProviders(提供程序)
.build(),
RC_登录);
}
但是当我这样做时,我得到了错误java.lang.IllegalArgumentException:提供了两个不同的服务器客户端ID
因此,我的问题是,当SHA1与现有GCP项目关联时,如何配置firebase项目以启用auth?我从firebase支持部门得到了以下响应,并且能够使其正常工作: 通过Google-services.json>文件配置使用FirebaseUI的Google登录。问题是,如果您使用的是来自不同>项目的OAuth客户端ID,则默认的\u web\u客户端\u ID将配置不正确。它将>指向新Firebase项目的自动生成的web客户端id;我们不想要这个 在>auth的步骤1中,我们调用#requestIdToken(getString(R.string.server_client_id))。在>firebaseUI中,也会完成此操作,并且此资源是由google-services.json生成的“default_web_client_id”。这需要改变 因此,要解决这个问题,您需要使用project>#1中的web OAuth客户端ID,您可以通过以下方式之一来实现: 更改google-services.json文件-您需要将client_id>字段从project#1更改为正确的web客户端id 您还需要将web客户端>OAuth从project#1添加到project#2的白名单(Auth>登录提供商>Google) 不要使用google-services.json,这样您就可以自己设置默认的客户机id。我们为此制定了指南,请参见 以下是我实现这一目标的过程:
- 输入一个名称
- 将Javascript源和授权重定向URL保留为空
- 添加您的android软件包名称
- 将签名证书留空
oauth\u客户机
标记并替换为
“oauth_客户端”:[
{
“客户id”:“,
“客户类型”:3
}
],
如果您需要任何其他oauth客户机,那么请确保白名单上的客户机位于顶部,因为这似乎是默认的- project root build.gradle
- classpath'com.google.gms:googleservices:4.0.0'
- 应用程序模块build.gradle
- 编译'com.google.firebase:firebase核心:16.0.0'
- 编译'com.firebaseui:firebaseui auth:4.0.0'
BasicNetwork.performRequest:的意外响应代码400https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyAssertion?alt=proto&key=AIzaSyBJL6EO8vMEJpyWUCAKP8ZgH4LYR0Hrwpk
检查您的gradle Dependenties是否设置为上述版本(或更高版本)
如果出现此错误:
com.google.firebase.FirebaseException:发生内部错误。[无效Idp响应:不允许将Google id_令牌用于此应用程序。其访问群体(OAuth 2.0客户端id)为,未授权在项目编号为的项目中使用。]
尝试在firebase控制台上删除并重新添加您的白名单客户端id。Lifesaver!消防基地的支援人员把我送到这里来的。如果您从FirebaseUI获得错误代码10,请提供快速提示:更改gradle配置中的某些内容(例如添加空行)、gradle同步、卸载应用程序、重建、运行。我完成了这些步骤,并让Google登录工作。我在谷歌云控制台中有一个现有的项目,它有相同的包名+SHA1。我现在正在尝试启用电话登录,似乎我需要将SHA1添加到firebase项目中