我有一个使用Firebase身份验证的Cordova / ionic / angular应用程序,可以在浏览器和模拟器中完美运行。但是,在实际设备上,对firebase.auth()的调用将返回错误代码" auth / network-request-failed",表示网络错误(例如超时,中断连接或无法访问的主机)发生了。这种情况发生在我运行设备调试时,在我的情况下,Visual Studio,以及我在设备(Android手机)上安装应用程序并运行它时。
firebase代码是:
<script src="https://www.gstatic.com/firebasejs/3.6.1/firebase.js"></script>
我已经在模板中用简单的<form>
替换了<div>
内容,因为我读了here它可能会导致重新提交,从而触发网络错误。我已尝试使用<button>
指令和<a>
指令的按钮。没有不同。除非角度或离子做一些混淆指令的魔法,否则它应该是干净的,但你永远不会知道。
在发布here时,还包含以下安全元标记作为问题的可能解决方案:
<meta "content_security_policy":"script-src 'self' https://apis.google.com https://www.googleapis.com https://securetoken.googleapis.com; object-src 'self'" , "permissions": [ "https://*/*", "activeTab" ] >
js代码应该不是问题,因为应用程序在浏览器中正常工作但我仍然包括它:
firebase.auth().signInWithEmailAndPassword(email, password)
.then(() => { ... }
.catch(error => {
console.log(error.code, error.message);
});
最后,我附加了onAuthStateChanged
观察员。观察者确实在设备上初始化但它永远不会触发 - 当然 - 因为auth()
调用返回错误。
我做错了什么?任何帮助都非常感谢。