Firebase身份validationFirebaseNetworkException:发生networking错误(例如超时,连接中断或无法访问的主机)

我为我的android应用程序创build一个身份validation工作stream程。 我允许用户使用用户名/密码和各种OAuth提供程序login。 我正在validation电子邮件和密码,因此我知道我传递给Firebase的信息是有效的。 我正在使用com.google.firebase:firebase-auth:9.6.1

当我执行下面的代码,我得到一个callback说,操作不成功的一个错误。

 mFirebaseAuth.signInWithEmailAndPassword(username,password).addOnCompleteListener(this); 

callback函数或完成监听器告诉我

 com.google.firebase.FirebaseNetworkException: A network error (such as timeout, interrupted connection or unreachable host) has occurred. 

我传递的用户名尚不存在。 所以,我会假设看到某种错误,说明用户不存在 。 我错误地传递了一些东西,还是我错误地假设? 我还可以看到,在Firebase文档中,iOS库具有各种API方法常见的各种错误代码,因为Android部分不显示此代码。 其中一个例外是FIRAuthErrorCodeUserNotFound 。 那么,这个function是否存在于Android库中呢?

Solutions Collecting From Web of "Firebase身份validationFirebaseNetworkException:发生networking错误(例如超时,连接中断或无法访问的主机)"

它也可以发生在谷歌播放服务没有运行。 尝试启动Play商店,并检查它是否正常工作。 如果没有重启设备的问题。并且比较在项目中使用的谷歌播放服务和谷歌播放服务在设备是相同的,如果不更新谷歌播放服务。

这只是一个小小的例子,但它可能是个例外。

<form></form>更改为<div></div>解决了这个问题:发生networking错误(例如超时,连接中断或无法访问的主机)。 在HTML中的表单元素。 小错误

我面临同样的问题。 在API_KEY中清除额外的空间解决了我的问题,所以我的build议是检查你的GoogleService-Info.plist

  1. API_KEY是正确的(没有额外的空格)
  2. GOOGLE_APP_ID
  3. CLIENT_ID

我想这可能会帮助你

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

不要把href属性放到标签a 。 这有助于解决我的情况

在您的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"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 

检查您的重写firebase.json ,请确保您不重写身份validation提供程序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处理程序的forms,你需要在发送请求之前防止默认。

这是一个片段(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> ) } } 

我遇到这个问题后,我search了很多我得到的解决scheme,我的情况是由于背景数据的限制发生