FirebaseAuth:getGoogleApiForMethod()返回了Gms:com.google.firebase.auth.api.internal.zzal@489

时间:2019-02-17 13:25:47

标签: firebase flutter firebase-authentication

当我尝试进行电话验证时,我遇到了错误。

W/BiChannelGoogleApi(12340): [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzal@489

我已经在Stackverflow和其他地方检查了相同的错误,但是在任何地方都没有得到正确的解决方案。

更改pubspec.yml

dependencies:
  flutter:
    sdk: flutter

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.2
  firebase_core: ^0.3.0+2  //new
  firebase_auth: ^0.8.1+1  //new

注意-添加了// //高亮显示我在上述文件中添加的行。

app / build.gradle

的末尾添加以下行
apply plugin: 'com.google.gms.google-services'

android / build.gradle

buildscript {
    ext.kotlin_version = '1.2.71'
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.2.0'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

android / app / build.gradle

.....
android {
    compileSdkVersion 28
    .....
    defaultConfig {
        ....
        minSdkVersion 21
        targetSdkVersion 27
        ......
    }
    .....
    dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.google.firebase:firebase-auth:16.1.0'
//    implementation 'androidx.core:core-ktx:1.0.0'
}

apply plugin: 'com.google.gms.google-services'

android / app / gradle.properties

org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true

我正在使用AndroidX。

18 个答案:

答案 0 :(得分:7)

我最近解决了这个问题。 基本上有此错误的原因很多,因为当FirebaseAuth入口点执行失败时会返回此错误。 遇到此错误的原因之一是我的仿真器未连接到互联网 因此,也请在模拟器内打开 Internet

答案 1 :(得分:2)

我遇到此错误,并且在更新pubspec.yaml文件中的库后,无法连接电子邮件/密码。

要解决此错误,我还更新了gradle文件(build.grade):

dependencies {
    classpath 'com.android.tools.build:gradle:3.6.1'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath 'com.google.gms:google-services:4.3.3'
}

和我的gradle-wrapper.properties文件,我更新了以下行:

distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip

答案 2 :(得分:1)

这是一个依赖性问题,您可能需要再次查看Firebase设置。我遇到了一个Flutter应用程序,并遇到了同样的问题。

答案 3 :(得分:1)

就我而言,我只是很懒,使用了3个字符长的密码。我不知道这是否有一天可以帮助别人。??‍♂️

答案 4 :(得分:1)

这是因为“不完整的监听器”会自动验证电话号码是否正确。它的内部API,但我们要进行短信验证。 因此,它不会在安装了该应用程序的那个号码上发送短信。发送到另一个设备号,就可以正常使用

答案 5 :(得分:0)

我已经解决了这个问题。 我有明确的解决方案

执行以下步骤:

  1. 首先转到firebase,然后进行身份验证并启用呼叫验证。

2。第二件事是:电话号码的格式为+国家/地区代码,然后为电话号码(例如+918282 .....)。

希望这会有所帮助

答案 6 :(得分:0)

我尝试了所有操作,此错误使我花费了大约三个小时的时间,只是为了确保您是否尝试从模拟器发送OTP,否则将无法正常工作,因为它需要网络,您可以检查其他内容。 祝你好运!

答案 7 :(得分:0)

您的解决方案可能来晚了,但就我而言,测试设备(仿真器)中没有WiFi连接

答案 8 :(得分:0)

我的模拟器上肯定有问题。我只是在一个新的模拟器上运行了该应用程序,就可以了。在我的设备上也可以正常运行。

答案 9 :(得分:0)

如果您要进行电话验证,请检查您是否在提供国家/地区代码。那对我有用。

答案 10 :(得分:0)

奇怪的行为, 使用与Firebase连接的android Emulator 使用电话键盘时可以正常使用,但使用我的PC键盘时,会遇到此问题

答案 11 :(得分:0)

我在尝试进行电子邮件/密码身份验证时遇到了相同的错误,并浪费了几个小时,最后才意识到我没有在firebase帐户中启用电子邮件/密码身份验证。

答案 12 :(得分:0)

W/BiChannelGoogleApi(12340): [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzal@489

这些类型的错误代码几乎没有用。尝试

Log.i("flag", "signInAnonymously:failure", task.exception) 

在auth.createUserWithEmailAndPassword或类似方法中。

进行身份验证时,Google会查找至少包含6个字符以上的密码。

您可以在此处看到一些示例:https://github.com/firebase/quickstart-android/tree/master/auth

答案 13 :(得分:0)

这可能是由于测试设备上的Google Play服务版本不兼容。

如果它是模拟器,请尝试切换到另一张图像,并检查您是否使用最新版本的播放服务。

请注意,只有Android N(API 24)及更高版本才支持通过playstore更新播放服务。

答案 14 :(得分:0)

对我来说,我有这个堆栈跟踪

  

getGoogleApiForMethod()返回了Gms:   com.google.firebase.auth.api.internal.zzak@a73de51

我忘记在Firebase控制台中启用Sign-In Provider。在身份验证部分的登录方法标签下启用Phone Provider后,我解决了该问题。

我也遇到另一种相同的错误

  

getGoogleApiForMethod()返回了Gms:   com.google.firebase.auth.api.internal.zzak@a73de51 I / flutter(2870):   提供的电话号码格式不正确。

最初,我只发送不带国家代码的手机号码。然后,我刚发送了带有国家代码的电话号码。

例如:+91 8811111111

效果很好。

答案 15 :(得分:0)

在我看来,这是一个非常愚蠢的问题,我的移动互联网无法正常工作。

答案 16 :(得分:0)

我在这个上损失了几个小时,所以让我分享一下我的经验。

Gms代表"Google Mobile Services”,它基本上是Google开发的Android的附加API,可连接到Google提供的一系列服务。 如果您使用flutter,则可能是由您使用的flutter包(例如firebase_auth,flutter_facebook_login或/和google_sign_in)包装的。

该错误有时可能是由更高级别的组件处理的,因此,如果您遇到该错误,并不表示您的配置错误或无法正常工作。 就我而言,使用Google登录进行登录时,我遇到此错误并获得成功的最终结果,如下所示:

info flutter.tools W/BiChannelGoogleApi( 4106): [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzak@8116b2c
info flutter.tools D/FirebaseAuth( 4506): Notifying id token listeners about user ( lCZZZZJELWhGUZZZZB3vDklZZZZ2 ).
info flutter.tools D/FirebaseAuth( 4506): Notifying auth state listeners about user ( lCZZZZJELWhGUZZZZB3vDklZZZZ2 ).
info flutter.tools I/flutter ( 4506): FirebaseUser({uid: lCZZZZJELWhGUZZZZB3vDklZZZZ2, photoUrl: https://lh5.googleusercontent.com/-ZZzir_P-ENw/AAAAAAAAAAI/AAAAAAAAAAA/PpxhiXg_ISk/s96-c/photo.jpg, isAnonymous: false, etc....

我的代码中有一个飞镖调用print(fireUser);,因此我们认为它是成功的。

但是在Facebook Auth的情况下,我只是遇到了这个问题,此后什么也没有发生,但是在Facebook服务器端,登录成功了,因为我可以在Facebook开发控制台中看到事件。 / p>

info flutter.tools W/BiChannelGoogleApi( 4106): [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzak@8116b2c

由于日志中没有其他内容,因此在此过程中有些卡住了。

我的问题是我将两个应用程序App Id和Secret混合在一起。有时我很头脑清醒,但问题是没有零警告或特定错误,所以这里列出了Firebase和其他插件可能失败的事情:

  • 确保已在Firebase控制台中正确配置了登录提供程序(google,facebook等)
  • 升级所有Flutter软件包。我个人不使用软件包版本,而是使用所有flutter软件包的最新版本。我使用的是AndroidX。

在Facebook Auth的特定情况下(我发现Google登录更容易集成):

  • 确保您在看好的应用程序
  • 确保App ID和App secret是好的。在Facebook开发者控制台中,在此处检查“基本设置”。
  • 确保您已添加“ Facebook登录”产品。如果您没有在左侧菜单中看到它,请在Facebook开发控制台中,检查仪表板并添加它。
  • 在“ Facebook登录名”产品设置中,确保已添加Firebase控制台为您提供的“有效OAuth重定向URI”(在Facebook登录提供程序配置中)。您可以在该页面下方的“重定向URI验证程序”工具中对其进行检查。
  • 在应用程序的“基本设置”中,如果您使用flutter(=>移动平台),请确保您具有IOS部分/平台和Android部分/平台。要实现此目的,您可以手动“添加平台”或使用“快速入门”。
  • 最后,“ IOS”部分只能包含“捆绑ID”
  • 和Android部分应包含“ Google Play包名称”,“类名称”和至少一个“键哈希”(用于调试)。如果您不知道如何创建哈希,请使用“ Facebook登录”快速入门。

希望这会有所帮助

答案 17 :(得分:0)

我遇到了这个错误,但是发生了,因为我试图在我的应用程序上创建一个使用相同电子邮件的帐户,我不得不从数据库和身份验证中删除该帐户。

我返回的代码与您的代码有些不同。

[FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzal@**5bfaa19**