Firebase身份验证:来自此Android客户端应用程序com.xxx的请求被阻止

pld*_*c44 6 android firebase firebase-authentication

我正在Android应用程序中实现Firebase AuthUI的标准教程。但是,在测试时,我尝试从应用程序内部使用Google登录进行登录,并收到以下异常:

com.google.firebase.FirebaseException: An internal error has occurred. 
[ Requests from this Android client application com.xxx are blocked. ]
Run Code Online (Sandbox Code Playgroud)

该应用程序会显示“ Google SmartLock”横幅,就像它在登录我一样,但随后消失了,在日志猫中,我看到了上面的错误。

我验证了Firebase控制台中用于调试和发布的SHA-1证书指纹。我已经在此应用程序中使用了一段时间,所以我知道它们是正确的。

我已经在Firebase身份验证控制台上启用了Google登录和电子邮件登录。我已经尝试了电子邮件/谷歌登录和这两个过程都开始了,但是由于相同的异常而失败了。我还下载并使用了一个新的google-services.json文件-不变。

应用程序名称正确。他们为什么要阻止我?有人有运气联系Firebase支持人员吗?

这是build.gradle的片段:

api 'com.android.support:support-v4:27.1.1'
api 'com.android.support:appcompat-v7:27.1.1'
api 'com.android.support.constraint:constraint-layout:1.1.2'
api 'com.google.firebase:firebase-storage:16.0.1'
api 'com.google.firebase:firebase-core:16.0.1'
api 'com.google.android.gms:play-services-maps:15.0.1'
api 'com.google.android.gms:play-services-location:15.0.1'
api 'com.google.android.gms:play-services-ads:15.0.1'
api 'com.google.code.findbugs:jsr305:3.0.2'
api 'com.google.apis:google-api-services-storage:v1-rev68-1.21.0'
implementation 'com.firebaseui:firebase-ui-storage:0.6.0'
implementation 'com.firebaseui:firebase-ui-auth:4.0.0'
testImplementation 'junit:junit:4.12'
Run Code Online (Sandbox Code Playgroud)

Logcat:

/com.x.x W/BiChannelGoogleApi: [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzal@13ca6fd
/com.x.x D/FA: Logging event (FE): user_engagement(_e), Bundle[{firebase_event_origin(_o)=auto, engagement_time_msec(_et)=12629, firebase_screen_class(_sc)=PhotoActivity, firebase_screen_id(_si)=-1316627329056180637}]
/com.x.x D/FA: Logging event (FE): screen_view(_vs), Bundle[{firebase_event_origin(_o)=auto, firebase_previous_class(_pc)=PhotoActivity, firebase_previous_id(_pi)=-1316627329056180637, firebase_screen_class(_sc)=KickoffActivity, firebase_screen_id(_si)=-1316627329056180636}]
/com.x.x D/FA: Connected to remote service
/com.x.x D/FA: Logging event (FE): user_engagement(_e), Bundle[{firebase_event_origin(_o)=auto, engagement_time_msec(_et)=1312, firebase_screen_class(_sc)=KickoffActivity, firebase_screen_id(_si)=-1316627329056180636}]
/com.x.x D/FA: Logging event (FE): screen_view(_vs), Bundle[{firebase_event_origin(_o)=auto, firebase_previous_class(_pc)=KickoffActivity, firebase_previous_id(_pi)=-1316627329056180636, firebase_screen_class(_sc)=SingleSignInActivity, firebase_screen_id(_si)=-1316627329056180635}]
/com.x.x D/FA: Logging event (FE): screen_view(_vs), Bundle[{firebase_event_origin(_o)=auto, firebase_previous_class(_pc)=SingleSignInActivity, firebase_previous_id(_pi)=-1316627329056180635, firebase_screen_class(_sc)=SignInHubActivity, firebase_screen_id(_si)=-1316627329056180634}]
/com.x.x W/BiChannelGoogleApi: [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzal@13ca6fd
/com.x.x D/FA: Logging event (FE): screen_view(_vs), Bundle[{firebase_event_origin(_o)=auto, firebase_previous_class(_pc)=SignInHubActivity, firebase_previous_id(_pi)=-1316627329056180634, firebase_screen_class(_sc)=SingleSignInActivity, firebase_screen_id(_si)=-1316627329056180635}]
E/Volley: [23564] BasicNetwork.performRequest: Unexpected response code 403 for https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyAssertion?alt=proto&key=[key]
E/Volley: [23564] BasicNetwork.performRequest: Unexpected response code 403 for https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyAssertion?alt=proto&key=[key]
I/AuthChimeraService: Error description received from server: Requests from this Android client application com.x.x are blocked.

/com.x.x E/AuthUI: A sign-in error occurred.
com.google.firebase.FirebaseException: An internal error has occurred. [ Requests from this Android client application com.x.x are blocked. ]
Run Code Online (Sandbox Code Playgroud)

Dip*_*Ray 14

我今天刚遇到同样的问题,幸运的是解决了这个问题。我仍然不知道为什么会发生这种情况,但这里是我为解决而采取的步骤:

  1. 在 Firebase 控制台设置中删除已添加的 SHA-1 签名证书指纹。
  2. 转到 android studio 并使用 Gradle 文件同步项目。
  3. 再次将 SHA-1 签名证书指纹添加到 Firebase 控制台设置。

以下是将 SHA-1 签名证书指纹添加到 firebase 的方法:单击此处


Roh*_*kol 6

我注意到由于某种原因,我的 Google Credentials API 密钥限制没有包含我的 SHA-1 指纹。

要查找您的 API 密钥,请转到 console.cloud.google.com/apis/credentials?project=。或者去 console.cloud.google.com -> 点击左上角的汉堡图标 -> APIs and Services -> Credentials

Choose the API Key that you're using. -Under "App Restrictions", choose "Android Apps" (If you're build an Android app for example) -Under "Restrict usage to your Android apps", Click "Add an item" -Enter your package name and your SHA-1 Fingerprint

To know how to find your SHA-1 Fingerprint, LINK

The signingReport task may be under Gradle(on the right vertical band) app -> tasks -> android


mAh*_*iki 6

如果您将应用程序发布到 Google Play 商店,然后显示此错误:

[ Requests from this Android client application com.x.x are blocked. ]
Run Code Online (Sandbox Code Playgroud)

这里有一个解决方案可以非常轻松地解决您的问题。

  1. 打开谷歌游戏控制台 - > https://play.google.com/apps/publish
  2. 转到您的特定应用程序,该应用程序显示错误。
  3. 然后走Setup -> App signin
  4. 最后你得到了你的SHA-1 certificate fingerprint

要查找您的 SHA-1 证书指纹,请转至console.cloud.google.com/apis/credentials?project。或者转至console.cloud.google.com -> 单击 上的汉堡包图标top left -> APIs and Services -> Credentials。并改变你的一切SHA-1 certificate fingerprint


Sed*_*dge 6

对于可能面临此问题的其他人,您可能正在 Play 控制台上使用内部应用共享,并启用了 Google 签名。如果是这样,您可能忘记将其调试SHA-1 密钥添加到您的 Firebase 控制台。

很难调试或找到答案,所以我希望我已经添加了所有正确的关键字来帮助下一个人。


pld*_*c44 5

我使用的Google Cloud API密钥仅限我的软件包名称为android,但仅提供了生产SHA-1证书指纹,而没有给出调试密钥。我添加了调试密钥的SHA-1证书以及程序包名称,以便生产证书和调试证书都出现在该密钥的“应用程序限制”中,并且可以正常工作。显然被Firebase“阻止”意味着您的API密钥可能受到不当限制。

  • 就我而言,已发布的应用程序出现了此问题,我必须转到控制台并为应用程序限制设置“无”。尽管我已经使用了发布 SHA。 (2认同)