web-dev-qa-db-ja.com

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ライブラリには、Androidセクションにはこれが表示されないすべてのAPIメソッドセクションに共通のさまざまなエラーコードがあります。これらの例外の1つはFIRAuthErrorCodeUserNotFound。では、その機能はAndroidライブラリに存在しますか?

14
Landen

Google Playサービスが実行されていない場合にも発生する可能性があります。 Playストアを起動して、動作するかどうかを確認してください。デバイスの再起動の問題がない場合。また、プロジェクトで使用しているGoogle Playサービスと、Google Playサービスを更新しない場合はデバイス内のGoogle Playサービスを比較します。

これは単なる例外ですが、例外が発生する可能性があります。

11
Tej

<form></form>から<div></div>に変更すると、この問題が解決しました。

「ネットワークエラー(タイムアウト、接続の中断、到達不能なホストなど)がHTMLのフォーム要素で発生しました。小さなバグ。」

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

href属性をタグaに入れないでください。私のケースを解決するのに役立ちます

3
Huy - Logarit

あなたの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"/>

私は同じ問題に直面していました。 API_KEYの余分なスペースをクリアすることで問題が解決したので、GoogleService-Info.plistを確認することをお勧めします

  1. API_KEYは適切です(余分なスペースなし)
  2. GOOGLE_APP_ID
  3. クライアントID

これはあなたを助けるかもしれないと思う

1
Chetan

フォームonSubmitハンドラでこのチェックを行う場合、リクエストを送信する前にDefaultを防ぐ必要があります。

これは動作するスニペット(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>
        )
    }
}
1

私は私の携帯電話の日付を修正する問題が1年遅れていたのを解決しました、私が日付を修正したとき、すべてが再びうまくいき、エラーが消えます、私はあなたを助けてくれます

1
luishsivla

私の場合、問題は依存関係のバージョンの不一致によるもので、次のような依存関係を変更しました

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

その後、完全に機能し始めました。

0
Sathish

Firebaseへのアクセスでも同様の問題が発生しました。私の場合、問題はデバッガを介して実際のデバイスでこれを行っていたことでした。 「正常に」コードを実行すると、エラーは消えました。そのため、デバッガーが障害になっているかどうかを確認すると役立つ場合があります。

0
atschpe

authDomainがWebプロジェクトのfirebaseキーで不適切に設定されている場合にも発生する可能性があります。

0
inorganik