首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Firebase身份验证失败,并显示auth/ network -request-failed A network error (如超时

Firebase身份验证失败,并显示auth/ network -request-failed A network error (如超时
EN

Stack Overflow用户
提问于 2017-05-05 19:30:30
回答 1查看 7.6K关注 0票数 4

我在尝试进行Firebase身份验证时遇到了非常奇怪的行为。更重要的是,我做了一个可以工作的版本和一个不能工作的版本。首先,工作的版本:

代码语言:javascript
运行
复制
<!doctype html>
<html>
<head>
<script src="https://www.gstatic.com/firebasejs/3.9.0/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/3.9.0/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/3.9.0/firebase-database.js"></script>
<script src="https://www.gstatic.com/firebasejs/3.9.0/firebase-messaging.js"></script>
<script src="https://www.gstatic.com/firebasejs/3.9.0/firebase.js"></script>
<script>

// Initialize Firebase
var config = {
  apiKey: "AIzaSyDapkNCu9UwitvO84PwQHnUQ6e4g6UK7JM",
  authDomain: "********.firebaseapp.com",
  databaseURL: "https://*******.firebaseio.com",
  projectId: "********",
  storageBucket: "********.appspot.com",
  messagingSenderId: "582605565305"
};

  firebase.initializeApp(config);
</script>
</head>


<body>
<script>
    firebase.auth().signInWithEmailAndPassword("myemail@abc.xyz", "mypassword").catch(function(error) {
// Handle Errors here.
  var errorCode = error.code;
  var errorMessage = error.message;
  alert(errorCode + " " + errorMessage);
// ...
});

</script>

</body>
</html>

现在,这个版本不起作用,并给出了这个问题标题中所述的错误。

代码语言:javascript
运行
复制
<!doctype html>
<html>
<head>
  <script src="https://www.gstatic.com/firebasejs/3.9.0/firebase-app.js"></script>
  <script src="https://www.gstatic.com/firebasejs/3.9.0/firebase-auth.js"></script>
  <script src="https://www.gstatic.com/firebasejs/3.9.0/firebase-database.js"></script>
  <script src="https://www.gstatic.com/firebasejs/3.9.0/firebase-messaging.js"></script>
  <script src="https://www.gstatic.com/firebasejs/3.9.0/firebase.js"></script>

<script>
// Initialize Firebase
var config = {
  apiKey: "AIzaSyDapkNCu9UwitvO84PwQHnUQ6e4g6UK7JM",
  authDomain: "**********.firebaseapp.com",
  databaseURL: "https://*********.firebaseio.com",
  projectId: "**********",
  storageBucket: "**********.appspot.com",
  messagingSenderId: "582605565305"
};
  firebase.initializeApp(config);
</script>

<script src="myfirebase.js"></script>
</head>

<body>
<form name="myform">
  <span class="prm">Email</span><input type="text" name="email"></br>
  <span class="prm">Password</span><input type="password" name="password" ></br>
  <input type="image" src="some.png" onClick="loginToFirebase();">
</form>

</body>
</html>

和myfirebase.js

代码语言:javascript
运行
复制
function loginToFirebase(){
  var myform = document.forms.myform;
  if(myform){
    alert("trying to log as:" + myform.email.value + " and:" + myform.password.value);
    firebase.auth().signInWithEmailAndPassword(myform.email.value, myform.password.value).catch(function(error) {
    // Handle Errors here.
      var errorCode = error.code;
      var errorMessage = error.message;
      alert(errorCode + " " + errorMessage);
    // ...
  });
}
}

如你所见,这是一个非常简单的例子,两个版本几乎是一样的。唯一的区别是,在工作版本中,电子邮件和密码被硬编码到源代码中,而在非工作版本中,有一个HTML表单和一个小javascript。我设置了alert语句,以确保一切都按预期运行。

最奇怪的事情来了。这两个版本都可以在Firefox上运行,但不能在Chrome、Opera和Konqueror上运行(我在Linux/Fedora24上工作)。显示相同的auth/network-request-failed A network error (such as timeout, interrupted connection or unreachable host) has occurred.

Firebase控制台显示工作版本确实有效。

我清除了Chrome缓存,但没有结果。

有人能帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2017-05-07 00:02:38

解决了!

我意识到它与内容安全策略有关,尝试了各种选项,以下是解决方案。首先,不是内联

代码语言:javascript
运行
复制
onClick="loginToFirebase();"

我必须注册事件监听器

代码语言:javascript
运行
复制
function initApp(){
  document.getElementById('mybutton')
        .addEventListener('click', loginToFirebase);
}

window.onload = function() {
   initApp();
 }

这并不是我的问题的结束,我试图指定内容安全策略,但没有结果。

在仔细研究了Firebase演示代码后,我决定删除<form>标签,仅此而已!

希望,它将帮助某人:)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43803855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档