2017-05-05 31 views
3

Firebase認証を試みたときに非常に奇妙な動作が発生しました。作品、バージョン:auth/network-request-failedでファイアベース認証に失敗しましたネットワークエラー(タイムアウトなど)

<!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("[email protected]", "mypassword").catch(function(error) { 
// Handle Errors here. 
    var errorCode = error.code; 
    var errorMessage = error.message; 
    alert(errorCode + " " + errorMessage); 
// ... 
}); 

</script> 

</body> 
</html> 

そして今、仕事と私は、この質問のタイトルに記載されたエラーを与えていないバージョン

<!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

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があることです。 アラートステートメントを入れて、すべてが期待通りに機能することを確認します。

ここでは一番奇妙なことがあります。どちらのバージョンも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キャッシュをクリアしましたが、結果はありません。

誰でも手伝えますか?

答えて

5

解決済み!

コンテンツセキュリティポリシーで何かがあり、さまざまなオプションを試してみたところ、これが解決策です。 まず、代わりにインライン

onClick="loginToFirebase();" 

の私は、これは私の問題の終わりではなかった

function initApp(){ 
    document.getElementById('mybutton') 
     .addEventListener('click', loginToFirebase); 
} 

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

イベントリスナーを登録しなければならなかったが、結果なしで、コンテンツセキュリティポリシーを指定しようとしました。

Firebaseのデモコードを徹底的に見て、<form>タグを削除することにしました。

希望、それは誰かを助けるでしょう:)

+0

実際にそれは動作します!ありがとうございました –

関連する問題