我正在为我的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库中吗?
答案 0 :(得分:14)
从<form></form>
更改为<div></div>
解决了这个问题:
&#34; HTML中的表单元素中出现网络错误(例如超时,中断连接或无法访问的主机)。小虫。&#34;
答案 1 :(得分:7)
当Google Play服务未运行时也会发生这种情况。尝试启动Play商店并检查它是否正常工作。如果没有重启设备问题。并且还比较了在项目中使用的google play服务和设备中的google play服务是否相同,如果没有更新google play服务。
这只是一个次要但可能的情况,它给出了例外。
答案 2 :(得分:3)
<a (click)="login()" class="nav-link">Login</a>
请勿将href
属性放入标记a
。这有助于解决我的案例
答案 3 :(得分:1)
我解决了修复我的手机日期迟到一年的问题,当我修复了日期,一切都运转良好,错误消失了,我跳这个帮助你
答案 4 :(得分:1)
我遇到了同样的问题。什么解决了我的问题,清除了API_KEY中的额外空间,所以我的建议是检查你的GoogleService-Info.plist
我认为这可能会对你有所帮助
答案 5 :(得分:1)
在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"/>
答案 6 :(得分:1)
如果您在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>
)
}
}
答案 7 :(得分:0)
检查firebase.json
中的重写,确保您不重写身份验证提供者网址/__/
{
"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"
}
]
}
}
也可能是服务工作者的问题。见statsmodels doc
答案 8 :(得分:0)
在我的情况下,问题是由于依赖项的版本不匹配,然后我更改了依赖项,如下所示
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:+'
然后它开始完美运作。
答案 9 :(得分:0)
如果您的authDomain
在Web项目的Firebase密钥中设置不正确,也会发生这种情况。
答案 10 :(得分:0)
我在访问Firebase时遇到类似的问题。就我而言,问题在于我是通过调试器在真实设备上执行此操作的。一旦我“正常”运行代码,错误就消失了。因此,检查调试器是否妨碍操作可能会有所帮助。
答案 11 :(得分:0)
如果您使用的是Genymotion,则可能是您未激活Open Gapps(位于右上角)
答案 12 :(得分:0)
我从firebase用户Object获取IdToken时遇到了这个问题。我不知道真正的错误源是什么,它只是显示FirebaseNetworkException,但我也无法捕获该错误,因此我只是使用General Exception Object来捕获此错误。
如下
<div><h1>Test</h1></div>
答案 13 :(得分:0)
答案 14 :(得分:0)
我也遇到了同样的错误,有时有些小事情我们忘记了 就像->启用Internet一样
com.google.firebase.FirebaseNetworkException: A network error (such as timeout, interrupted connection or unreachable host) has occurred
这是FirebaseNetwordException 可能会出现Host不是如上所述的Reachabe的情况,因此请检查您的连通性
检查您是否已在清单中提供Internet权限的天气。
希望它将解决您的问题
答案 15 :(得分:0)
根据我的经验,我的建议可能是检查Firebase日志并从那里解决问题。
在我的情况下,我成功命中了端点,但是由于res.json({... response ...})上的变量 rowsCompany 无效,它产生了捕获错误 >
答案 16 :(得分:-1)
我搜索了很多后我遇到了这个问题我得到了解决方案,我的情况是由于背景数据的限制而发生