web-dev-qa-db-fra.com

Authentification Firebase FirebaseNetworkException: une erreur réseau (comme un délai d'attente, une connexion interrompue ou un hôte inaccessible) s'est produite

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?

14
Landen

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.

11
Tej

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

15
Dan Alboteanu
<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

3
Huy - Logarit

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

  1. API_KEY est correct (sans espaces supplémentaires)
  2. GOOGLE_APP_ID
  3. IDENTITÉ DU CLIENT

Je pense que cela pourrait vous aider

1
Chetan

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>
        )
    }
}
1
Konstantin Nikitin

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

1
luishsivla

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

0
ZuzEL

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.

0
Sathish

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.

0
atschpe

Cela peut également se produire si votre authDomain n'est pas défini correctement dans vos clés Firebase pour les projets Web.

0
inorganik