Firebase谷歌登录无法使用(安卓)

3
所以,我最初尝试将Firebase身份验证Google登录添加到我的应用程序中。当这没有成功时,我决定尝试Firebase的官方快速入门应用程序。我下载了它,将其导入到Android Studio中,并按照他们的所有说明操作。它仍然无法正常工作。
发生的情况是我会点击“登录”按钮,一个对话框会弹出,在那里我选择我的个人资料,然后就没有反应了。调试时,我发现onActivityResult result.isSuccess()方法返回false,我不知道该怎么办。
常见解决方案清单:
- 我已将Firebase JSON文件添加到快速入门应用程序中(在创建新项目后)。 - 我已提供SHA-1代码。 - Firebase Auth / Google Repo / Everything都是最新版本。 - 我已在Firebase控制台中启用了“启用Google登录”切换按钮。
设备详细信息:
  • 安卓设备:三星-SM-G530A

  • 安卓操作系统版本:5.1.1

  • Google Play服务版本:10.2.0

  • Firebase/Play Services SDK版本:10.2.0

这是他们的代码,我没有修改任何内容。在这里找到。

编辑:所以,我让他们的快速入门工作了。我认为这是我的Firebase上SHA-1代码的问题。但是现在,我在我的应用程序中遇到了一个新问题......无论何时调用FirebaseAuth,我都会得到像这样的错误:

error:cannot access zzbql
class file for com.google.android.gms.internal.zzbql not found

Error:Execution failed for task ':app:compileFacebookDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

编辑2:好吧,现在一切都糟透了!在我查看的任何xml/layout文件中,都会出现各种类未实例化的错误。

java.lang.NoSuchFieldError: AppCompatTextHelper
at android.support.v7.widget.AppCompatTextHelper.loadFromAttributes(AppCompatTextHelper.java:58)
at android.support.v7.widget.AppCompatTextHelperV17.loadFromAttributes(AppCompatTextHelperV17.java:40)
at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:72)
at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:62)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:465)
at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:172)
at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:150)
at com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadClass(LayoutlibCallbackImpl.java:193)
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:333)
at android.view.BridgeInflater.onCreateView(BridgeInflater.java:152)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:717)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:785)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:222)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:858)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:834)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:861)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:834)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:861)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:834)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:861)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:834)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:324)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:429)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:389)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:548)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:533)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:966)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:533)
at com.android.tools.idea.rendering.RenderTask.lambda$inflate$70(RenderTask.java:659)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

1
你能从同一设备登录到 Google 网络服务吗?只是检查一下它不是网络问题。 - hack_on
你所说的 Google Web 服务是指像 Gmail/Google 这样的普通 Google 应用程序吗?我可以登录这些应用程序。 - therealone
是的,那就是我的想法。但我想你可能在你的手机/ WiFi 上有某种防火墙,阻止访问 Firebase 认证服务器(不太可能——它可能只是使用 https)。 - hack_on
3个回答

1

大家好,感谢你们的帮助。

原问题的解决方案是我的Firebase中SHA-1指纹不正确。

我的编辑解决方案是将com.google.android.gms的版本从10.2.0降低到10.0.1

很奇怪,但现在它可以工作了!


1
 mGoogleApiClient = new GoogleApiClient.Builder(this) 
.enableAutoManage(this /* FragmentActivity /, this / OnConnectionFailedListener*/)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
.build();

在上述代码的末尾添加mGoogleApiClient.connect();

“at the end of its initialization” 是什么意思? - therealone
@therealccarter编辑了我的答案,使其更有意义。 - Deepesh
1
@cullub 它连接客户端与Google Play服务。在此处阅读更多信息:https://developers.google.com/android/reference/com/google/android/gms/common/api/GoogleApiClient - Deepesh

0
建议从这里开始收集更多关于问题的调试信息。 可能使用以下方法:
FirebaseDatabase.getInstance().setLogLevel(Logger.Level.DEBU‌​G)

然后在Android Studio中查看控制台/日志输出。有关详细信息,请查看此处和/或此处

网络上有一些答案像这样,您可能已经看到了,但是如果没有更多关于错误的信息,很难知道它们是否适用于您的情况。


我一直在进行调试,如果我逐行执行所有代码,它失败的地方是当启动Google登录意图以获取活动结果时,这里是第142行 https://github.com/firebase/quickstart-android/blob/master/auth/app/src/main/java/com/google/firebase/quickstart/auth/GoogleSignInActivity.java - therealone
所以我认为这可能与我的SHA1或google-config.json文件有关。为了完全可复制,我将从github重新下载firebase的快速入门,并仅按照他们的指示进行Google登录。 - therealone
@therealccarter 是的,那很可能是原因。我正在寻找一个调试信息或者来自谷歌服务返回的HTTP数据(JSON),以便给你一个关于为什么认证失败的提示。 - hack_on
嘿,感谢你到目前为止的帮助,我会在明天或以后再回来向你汇报那些东西/其他更新。 - therealone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接