Firebase Authentication 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?
10 ответов
Это также может произойти, когда службы Google play не работают. Попробуйте запустить play store и проверить, работает ли он. Если не перезагрузка устройства.А также сравните сервисы google play, используемые в проекте, и сервисы google play на устройстве одинаковы, если не обновлять сервисы google play.
Это всего лишь незначительный, но возможный случай, когда он дает исключение.
изменение с <form></form>
до <div></div>
решить проблему:
Сетевая ошибка (например, тайм-аут, прерванное соединение или недостижимый хост) произошла в элементе формы в HTML. Небольшая ошибка.
Я столкнулся с той же проблемой. что решило мою проблему, очистив дополнительное пространство в API_KEY, поэтому я предлагаю проверить вашу GoogleService-Info.файл plist для
- api_key является правильным (без дополнительных пробелов)
- GOOGLE_APP_ID
- CLIENT_ID
Я думаю, это может помочь вам
<a (click)="login()" class="nav-link">Login</a>
не ставить href
атрибут в tag a
. Это поможет решить мой случай
в вашем AndroidManifest.xml add, он работает для меня
<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"/>
Проверьте свои перезаписи в 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
Если вы делаете эту проверку в обработчике формы onSumbit, вам нужно preventDefault перед отправкой запроса.
Это фрагмент (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>
)
}
}
Я решаю проблему фиксации даты моего мобильного телефона были на один год позже, когда я исправил дату, все снова работало хорошо, и ошибка исчезла, я прыгаю эта помощь вам
в моем случае проблема связана с несоответствием версий зависимостей, тогда я изменил зависимости, как показано ниже
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:+'
затем он начал работать отлично.
Я столкнулся с этой проблемой после поиска много я получил решение, я мой случай это происходило из-за ограничения фоновых данных