Firebase Authentication FirebaseNetworkException:发生网络错误(如超时、连接中断或无法访问主机)
Posted
技术标签:
【中文标题】Firebase Authentication FirebaseNetworkException:发生网络错误(如超时、连接中断或无法访问主机)【英文标题】:Firebase Authentication FirebaseNetworkException: A network error (such as timeout, interrupted connection or unreachable host) has occurred 【发布时间】:2017-02-24 10:00:34 【问题描述】:我正在为我的 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 库中是否存在该功能?
【问题讨论】:
我绝对不会说用户不存在。我认为这意味着连接有问题 -> 手机离线、服务器关闭、服务器没有响应等。 我现在遇到了同样的问题。有人知道有解决方案吗?谢谢 我收到类似的错误消息 我收到了类似的错误信息(2) 从下面的答案来看,它看起来像是所有未处理错误的默认错误处理程序。干得好,谷歌! 【参考方案1】:我遇到了同样的问题。通过在 API_KEY 中清除额外空间解决了我的问题,所以我的建议是检查您的 GoogleService-Info.plist
-
API_KEY 正确(没有多余的空格)
GOOGLE_APP_ID
CLIENT_ID
我想这可能对你有帮助
【讨论】:
【参考方案2】:当 google play 服务未运行时也会发生这种情况。尝试启动 Play 商店并检查它是否正常工作。如果不是重启设备问题。如果不更新google play服务,也比较项目中使用的google play服务和设备中的google play服务是否相同。
这只是一个小但可能的例外情况。
【讨论】:
【参考方案3】:从<form></form>
更改为<div></div>
解决了这个问题:
“html 中的表单元素发生网络错误(例如超时、中断连接或无法访问的主机)。小错误。”
【讨论】:
这是为我做的。我有一个表单,但我自己处理按钮单击而不是发帖或其他任何事情。 解决了。谢谢。知道为什么吗? 在发布此答案 3 年后,这为我解决了这个问题。回应@danh,有人知道为什么吗?【参考方案4】:<a (click)="login()" class="nav-link">Login</a>
不要将href
属性放入标签a
。这有助于解决我的问题
【讨论】:
【参考方案5】:我在搜索了很多之后遇到了这个问题,我得到了解决方案,就我而言,这是由于背景数据的限制而发生的。
如果您关闭 Google Service Framework 的后台数据。检查并打开它。它对我有用。
【讨论】:
【参考方案6】:检查您在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"
]
也可能是服务人员问题。见https://github.com/Polymer/polymer-cli/issues/290
【讨论】:
【参考方案7】:如果您在表单 onSumbit 处理程序中执行此检查,则需要在发送请求之前阻止默认。
这是一个有效的 sn-p (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>
)
【讨论】:
【参考方案8】:在您的 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"/>
【讨论】:
【参考方案9】:我解决了我手机的日期晚了一年的问题,当我确定日期后,一切又正常了,错误消失了,我跳这个对你有帮助
【讨论】:
【参考方案10】:在我的情况下,问题是由于依赖项的版本不匹配,然后我更改了如下所示的依赖项
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:+'
然后它开始完美运行。
【讨论】:
【参考方案11】:如果您的 authDomain
在 Web 项目的 Firebase 密钥中设置不正确,也会发生这种情况。
【讨论】:
【参考方案12】:我在访问 firebase 时遇到了类似的问题。就我而言,问题在于我是通过调试器在真实设备上执行此操作的。一旦我“正常”运行代码,错误就消失了。因此,检查调试器是否妨碍您可能会有所帮助。
【讨论】:
【参考方案13】:如果您使用 Genymotion,可能是您没有激活 Open Gapps(在右上角)
【讨论】:
【参考方案14】:-
原因很简单!检查设备是否有互联网连接。
如果您启用了 Google 服务
电话时间设置
firebase json 文件错误。无法获取客户端 ID 或谷歌应用 ID 或 API 密钥
【讨论】:
谢谢。我的问题是 - 我正在测试的物理设备没有连接到互联网。【参考方案15】:我也遇到了同样的错误,有时我们会忘记一些非常小的事情 喜欢 -> 以身份打开互联网
com.google.firebase.FirebaseNetworkException: A network error (such as timeout, interrupted connection or unreachable host) has occurred
这是 FirebaseNetwordException 可能存在主机无法达到上述情况的情况,因此请检查您的连接性
还要检查您是否在清单中提供了 Internet 权限。
希望它能解决你的问题
【讨论】:
【参考方案16】:根据我的经验,我的建议可能是一百万件事,即检查 Firebase 日志并从那里解决问题。
在我的情况下,我成功地到达了端点,但是由于 res.json(...response...) 上的变量 rowsCompany 无效,它产生了一个 catch 错误。 p>
【讨论】:
以上是关于Firebase Authentication FirebaseNetworkException:发生网络错误(如超时、连接中断或无法访问主机)的主要内容,如果未能解决你的问题,请参考以下文章
firebase phone authentication “由于异常活动,我们已阻止来自此设备的所有请求。稍后再试。”
Expo react-native app with firebase phone authentication在web上工作,在ios模拟器上出错,在Android上崩溃而没有警告