Аутентификация Firebase FirebaseNetworkException: произошла сетевая ошибка (например, тайм-аут, прерванное соединение или недоступный хост)

Я создаю рабочий процесс проверки подлинности для своего приложения для 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?

Ответ 1

Это также может случиться, если сервисы Google Play не запущены. Попробуйте запустить игровой магазин и проверьте, работает ли он. Если вы не перезагрузите устройство, а также сравните сервисы Google Play, использующие в проекте, и сервисы Google Play на устройстве будут такими же, если не будут обновлены сервисы google play.

Это всего лишь незначительный, но возможный случай, когда он дает исключение.

Ответ 2

переход с <form></form> на <div></div> решил эту проблему:

"В элементе формы в HTML файле произошла ошибка сети (например, тайм-аут, прерванное соединение или недоступный хост). Небольшая ошибка".

Ответ 3

<a (click)="login()" class="nav-link">Login</a>

Не помещайте атрибут href в тег a. Это помогает решить мое дело

Ответ 4

В вашем 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"/>

Ответ 5

Я столкнулся с той же проблемой. что решило мою проблему, очистив дополнительное пространство в API_KEY, поэтому мое предложение - проверить ваш GoogleService-Info.plist для

  • API_KEY является правильным (без дополнительных пробелов)
  • GOOGLE_APP_ID
  • CLIENT_ID

Я думаю, это может помочь вам

Ответ 6

Если вы выполните эту проверку в форме onSumbit-обработчика, вам необходимо предотвратитьDefault перед отправкой запроса.

Это фрагмент (Реакт), который работает:

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>
        )
    }
}

Ответ 7

Я разрешаю проблему, фиксирующую дату моего сотового телефона, опоздал на один год, когда я установил дату, все снова работало хорошо, и ошибка исчезла, я прыгаю, это поможет вам

Ответ 8

Проверьте свои перезаписи в firebase.json, убедитесь, что вы не переписываете URL-адрес поставщика авторизации /__/

{
  "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

Ответ 9

В моем случае проблема связана с несовпадением версий зависимостей, поэтому я изменил зависимости, как показано ниже

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:+'

затем его начали работать отлично.

Ответ 10

Это на самом деле проблема с разрешением. Добавьте эти строки в ваш файл "platform/android/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"/> 

а также

установить Кордова-плагин-белый список

и разрешить навигацию для всех в config.xml

<allow-navigation href="*" /> 

Ответ 11

Это также может произойти, если ваш authDomain неправильно настроен в ключах Firebase для веб-проектов.

Ответ 12

У меня была похожая проблема с доступом к базе данных. В моем случае проблема заключалась в том, что я делал это на реальном устройстве через отладчик. Как только я запустил код "нормально", ошибка исчезла. Таким образом, может быть полезно проверить, мешает ли отладчик.

Ответ 13

Я столкнулся с этой проблемой после многого поиска, я получил решение, в моем случае это произошло из-за ограничения фоновых данных