Аутентификация 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
Я столкнулся с этой проблемой после многого поиска, я получил решение, в моем случае это произошло из-за ограничения фоновых данных