Je crée un flux de travail d'authentification pour mon Android. J'autorise les utilisateurs à se connecter avec un nom d'utilisateur/mot de passe et divers fournisseurs OAuth. Je suis validation des e-mails et du mot de passe afin que je sache que les informations que je transmets à Firebase sont valides. J'utilise com.google.firebase:firebase-auth:9.6.1
Lorsque j'exécute le code suivant, j'obtiens un rappel qui indique que l'opération n'a pas réussi avec une erreur.
mFirebaseAuth.signInWithEmailAndPassword(username,password).addOnCompleteListener(this);
La fonction de rappel ou l'écouteur d'achèvement me dit
com.google.firebase.FirebaseNetworkException: A network error (such as timeout, interrupted connection or unreachable Host) has occurred.
Le nom d'utilisateur que je transmets n'existe pas encore. Donc, je suppose que je verrais une sorte d'erreur indiquant l'utilisateur n'existe pas. Suis-je en train de passer quelque chose de manière incorrecte ou est-ce que je suppose de façon incorrecte? Je peux également voir que dans la documentation de Firebase, la bibliothèque iOS a divers codes d'erreur communs à toutes les sections des méthodes de l'API alors que la section Android ne l'affiche pas. L'une de ces exceptions est FIRAuthErrorCodeUserNotFound
. Donc, cette fonctionnalité existe-t-elle même dans la bibliothèque Android?
Cela peut également se produire lorsque les services google play ne fonctionnent pas. Essayez de lancer Play Store et vérifiez si cela fonctionne. Sinon, redémarrez le problème de l'appareil.Et comparez également les services Google Play utilisés dans le projet et les services Google Play dans l'appareil sont les mêmes, sinon mettez à jour les services Google Play.
Ceci est juste un cas mineur mais possible où il donne l'exception.
changement de <form></form>
à <div></div>
a résolu ce problème:
"Une erreur de réseau (comme un délai d'attente, une connexion interrompue ou un hôte inaccessible) s'est produite dans un élément de formulaire dans le HTML. Petit bogue."
<a (click)="login()" class="nav-link">Login</a>
Ne mettez pas l'attribut href
dans la balise a
. C'est de l'aide pour résoudre mon cas
Dans votre ajout AndroidManifest.xml, cela fonctionne pour moi
<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"/>
J'étais confronté au même problème. ce qui a résolu mon problème en dégageant de l'espace supplémentaire dans API_KEY, donc ma suggestion est de vérifier votre GoogleService-Info.plist pour
Je pense que cela pourrait vous aider
Si vous effectuez cette vérification dans le gestionnaire onSumbit, vous devez empêcher Default avant d'envoyer une demande.
Ceci est un extrait (React) qui fonctionne:
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>
)
}
}
Je résous le problème en fixant la date de mon téléphone portable avec un an de retard, quand j'ai fixé la date, tout a bien fonctionné à nouveau et l'erreur disparaît, je saute cette aide vous
Vérifiez vos réécritures dans firebase.json
, assurez-vous de ne pas réécrire l'URL du fournisseur d'authentification /__/
{
"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"
}
]
}
}
Cela pourrait aussi être un problème de travailleur de service. Voir https://github.com/Polymer/polymer-cli/issues/29
Dans mon cas, le problème est dû à des versions incompatibles des dépendances, alors j'ai changé les dépendances comme ci-dessous
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:+'
puis ça a commencé à fonctionner parfaitement.
J'ai eu un problème similaire pour accéder à Firebase. Dans mon cas, le problème était que je faisais cela sur un vrai appareil via le débogueur. Une fois que j'ai exécuté le code "normalement", l'erreur a disparu. Il peut donc être utile de vérifier si le débogueur gêne.
Cela peut également se produire si votre authDomain
n'est pas défini correctement dans vos clés Firebase pour les projets Web.