【问题标题】:Firebase Authentication FirebaseNetworkException: A network error (such as timeout, interrupted connection or unreachable host) has occurredFirebase Authentication FirebaseNetworkException:发生网络错误(如超时、连接中断或无法访问主机)
【发布时间】:2017-02-24 10:00:34
【问题描述】:

我正在为我的 Android 应用创建身份验证工作流程。我允许用户使用用户名/密码和各种 OAuth 提供商登录。我正在验证电子邮件和密码,以便我知道我传递给 Firebase 的信息是有效的。我正在使用com.google.firebase:firebase-auth:9.6.1

当我执行以下代码时,我收到一个回调,指出操作不成功并出现错误。

mFirebaseAuth.signInWithEmailAndPassword(username,password).addOnCompleteListener(this);

回调函数或完成监听器告诉我

com.google.firebase.FirebaseNetworkException: A network error (such as timeout, interrupted connection or unreachable host) has occurred.

我传递的用户名还不存在。所以,我会假设看到某种错误说明用户不存在。我是错误地传递了一些东西还是我假设不正确?我还可以看到,在 Firebase 文档中,iOS 库具有所有 API 方法部分共有的各种错误代码,而 Android 部分没有显示这一点。这些例外之一是FIRAuthErrorCodeUserNotFound。那么,Android 库中是否存在该功能?

【问题讨论】:

  • 我绝对不会说用户不存在。我认为这意味着连接有问题 -> 手机离线、服务器关闭、服务器没有响应等。
  • 我现在遇到了同样的问题。有人知道有解决方案吗?谢谢
  • 我收到类似的错误消息
  • 我收到了类似的错误信息(2)
  • 从下面的答案来看,它看起来像是所有未处理错误的默认错误处理程序。干得好,谷歌!

标签: java android firebase firebase-authentication


【解决方案1】:

我遇到了同样的问题。通过在 API_KEY 中清除额外空间解决了我的问题,所以我的建议是检查您的 GoogleService-Info.plist

  1. API_KEY 正确(没有多余的空格)
  2. GOOGLE_APP_ID
  3. CLIENT_ID

我想这可能对你有帮助

【讨论】:

    【解决方案2】:

    当 google play 服务未运行时也会发生这种情况。尝试启动 Play 商店并检查它是否正常工作。如果不是重启设备问题。如果不更新google play服务,也比较项目中使用的google play服务和设备中的google play服务是否相同。

    这只是一个小但可能的例外情况。

    【讨论】:

      【解决方案3】:

      <form></form> 更改为<div></div> 解决了这个问题:

      “HTML 中的表单元素发生网络错误(例如超时、中断连接或无法访问的主机)。小错误。”

      【讨论】:

      • 这是为我做的。我有一个表单,但我自己处理按钮单击而不是发帖或其他任何事情。
      • 解决了。谢谢。知道为什么吗?
      • 在发布此答案 3 年后,这为我解决了这个问题。回应@danh,有人知道为什么吗?
      【解决方案4】:
      <a (click)="login()" class="nav-link">Login</a>
      

      不要将href 属性放入标签a。这有助于解决我的问题

      【讨论】:

        【解决方案5】:

        我在搜索了很多之后遇到了这个问题,我得到了解决方案,就我而言,这是由于背景数据的限制而发生的。


        如果您关闭 Google Service Framework 的后台数据。检查并打开它。它对我有用。

        【讨论】:

          【解决方案6】:

          检查您在firebase.json 中的重写,确保您没有重写身份验证提供程序网址/__/

          {
            "database": {
              "rules": "database.rules.json"
            },
            "storage": {
              "rules": "storage.rules"
            },
            "hosting": {
              "public": "public",
              "rewrites": [
                {
                  "source": "!/__/**",
                  "destination": "/index.html"
                },
                {
                  "source": "**/!(*.js|*.html|*.css|*.json|*.svg|*.png|*.jpg|*.jpeg)",
                  "destination": "/index.html"
                }
              ]
            }
          }
          

          也可能是服务人员问题。见https://github.com/Polymer/polymer-cli/issues/290

          【讨论】:

            【解决方案7】:

            如果您在表单 onSumbit 处理程序中执行此检查,则需要在发送请求之前阻止默认。

            这是一个有效的 sn-p (React):

            class LoginComponent extends React.Component {
                constructor(props) {
                    super(props);
                    this.state = {
                        email: '',
                        password: '',
                    };
                    this.login = this.login.bind(this);
                    this.handleLoginChange = this.handleLoginChange.bind(this);
                    this.handlePasswordChange = this.handlePasswordChange.bind(this);
                }
            
                handleLoginChange(event) {
                    this.setState({
                        email: event.target.value,
                        password: this.state.password,
                    });
                }
            
                handlePasswordChange(event) {
                    this.setState({
                        email: this.state.email,
                        password: event.target.value,
                    });
                }
            
                login(event) {
                    event.preventDefault();
                    firebase.auth()
                        .signInWithEmailAndPassword(this.state.email, this.state.password)
                        .then(function(user) {
                                  window.alert('OK' + user);
                              },
                              function(error) {
                                  window.alert('ERR' + error);
                              });
                }
            
                render() {
                    return (
                        <form onSubmit={this.login}>
                            <TextField hintText="login" value={this.state.email} onChange={this.handleLoginChange} /><br/>
                            <TextField hintText="password" type="password" value={this.state.password} onChange={this.handlePasswordChange} /><br/>
                            <RaisedButton type="submit" label="Login" primary={true} />
                        </form>
                    )
                }
            }
            

            【讨论】:

              【解决方案8】:

              在您的 AndroidManifest.xml 添加中,它适用于我

              <uses-permission android:name="android.permission.INTERNET"/>
              <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
              <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
              

              【讨论】:

                【解决方案9】:

                我解决了我手机的日期晚了一年的问题,当我确定日期后,一切又正常了,错误消失了,我跳这个对你有帮助

                【讨论】:

                  【解决方案10】:

                  在我的情况下,问题是由于依赖项的版本不匹配,然后我更改了如下所示的依赖项

                  implementation 'com.google.firebase:firebase-auth:+'
                  implementation 'com.google.firebase:firebase-core:+'
                  implementation 'com.google.android.gms:play-services-auth:+'
                  implementation 'com.firebaseui:firebase-ui-auth:+'
                  

                  然后它开始完美运行。

                  【讨论】:

                    【解决方案11】:

                    如果您的 authDomain 在 Web 项目的 Firebase 密钥中设置不正确,也会发生这种情况。

                    【讨论】:

                      【解决方案12】:

                      我在访问 firebase 时遇到了类似的问题。就我而言,问题在于我是通过调试器在真实设备上执行此操作的。一旦我“正常”运行代码,错误就消失了。因此,检查调试器是否妨碍您可能会有所帮助。

                      【讨论】:

                        【解决方案13】:

                        如果您使用 Genymotion,可能是您没有激活 Open Gapps(在右上角)

                        【讨论】:

                          【解决方案14】:
                          1. 原因很简单!检查设备是否有互联网连接。
                          2. 如果您启用了 Google 服务
                          3. 电话时间设置
                          4. firebase json 文件错误。无法获取客户端 ID 或谷歌应用 ID 或 API 密钥

                          【讨论】:

                          • 谢谢。我的问题是 - 我正在测试的物理设备没有连接到互联网。
                          【解决方案15】:

                          我也遇到了同样的错误,有时我们会忘记一些非常小的事情 喜欢 -> 以身份打开互联网

                           com.google.firebase.FirebaseNetworkException: A network error (such as timeout, interrupted connection or unreachable host) has occurred
                          

                          这是 FirebaseNetwordException 可能存在主机无法达到上述情况的情况,因此请检查您的连接性

                          还要检查您是否在清单中提供了 Internet 权限。

                          希望它能解决你的问题

                          【讨论】:

                            【解决方案16】:

                            根据我的经验,我的建议可能是一百万件事,即检查 Firebase 日志并从那里解决问题。

                            在我的情况下,我成功地到达了端点,但是由于 res.json({...response...}) 上的变量 rowsCompany 无效,它产生了一个 catch 错误。 p>

                            【讨论】:

                              猜你喜欢
                              • 2021-01-03
                              • 2020-04-13
                              • 2021-08-28
                              • 1970-01-01
                              • 2018-01-26
                              • 2019-10-04
                              • 2019-07-25
                              • 1970-01-01
                              • 2020-01-14
                              相关资源
                              最近更新 更多