2017-08-25 7 views
0

私たちのブラウザ拡張機能のユーザーは、firebase経由でログインします。トークンFirebaseの発行は1時間続きますが、Firebase SDKのUserオブジェクトはトークンのリフレッシングを透過的に処理します。これが、アドオンにFirebase SDKを含める理由です。webextensionのバックグラウンドスクリプトでFirebaseが動作しない

webextensionの文脈でFirebase JS SDKをロードすると、Firefoxで動作しません。 Chrome用です。テスト・リポジトリを作成しました。テスト・リポジトリはテスト・ユーザーにテスト・アプリケーションhereを記録します。

アプリはアプリケーションボタンがクリックされた後にユーザーがログインしようとします。

のFirefox 55.0.2(Linuxの64ビット版)で

、次のエラーがボタンをクリックする前に、(単にアドオンをロードすることによって)発生します。

[firefox/index.js][debug] Firefox stderr: JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 52: SyntaxError: test for equality (==) mistyped as assignment (=)? 
[firefox/index.js][debug] Firefox stderr: JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 57: SyntaxError: test for equality (==) mistyped as assignment (=)? 
JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 57: SyntaxError: test for equality (==) mistyped as assignment (=)? 
JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 82: SyntaxError: test for equality (==) mistyped as assignment (=)? 
JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 101: SyntaxError: test for equality (==) mistyped as assignment (=)? 
JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 106: SyntaxError: test for equality (==) mistyped as assignment (=)? 
JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 107: SyntaxError: test for equality (==) mistyped as assignment (=)? 
JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 125: SyntaxError: test for equality (==) mistyped as assignment (=)? 
JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 177: SyntaxError: test for equality (==) mistyped as assignment (=)? 
JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 272: SyntaxError: test for equality (==) mistyped as assignment (=)? 
JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 274: SyntaxError: test for equality (==) mistyped as assignment (=)? 
JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 396: SyntaxError: test for equality (==) mistyped as assignment (=)? 
JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 412: SyntaxError: test for equality (==) mistyped as assignment (=)? 
JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 471: SyntaxError: test for equality (==) mistyped as assignment (=)? 
JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 475: SyntaxError: test for equality (==) mistyped as assignment (=)? 
JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 477: SyntaxError: test for equality (==) mistyped as assignment (=)? 
[firefox/index.js][debug] Firefox stderr: JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 28: ReferenceError: reference to undefined property "name_" 
[firefox/index.js][debug] Firefox stderr: JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 285: ReferenceError: reference to undefined property "a" 
[firefox/index.js][debug] Firefox stderr: JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 28: ReferenceError: reference to undefined property "Auth" 

そして、このボタンをクリックした後:

[firefox/index.js][debug] Firefox stderr: JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 279: ReferenceError: reference to undefined property "currentUser" 
[firefox/index.js][debug] Firefox stderr: JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 59: ReferenceError: reference to undefined property "closure_lm_434254" 
[firefox/index.js][debug] Firefox stderr: JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 54: ReferenceError: reference to undefined property "storage" 
[firefox/index.js][debug] Firefox stderr: JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 176: ReferenceError: reference to undefined property "Va" 
[firefox/index.js][debug] Firefox stderr: JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 176: ReferenceError: reference to undefined property "Oe" 
[firefox/index.js][debug] Firefox stderr: JavaScript strict warning: moz-extension://ec7f4b77-3e2d-48c6-8e27-bb75d93980d1/firebase.js, line 91: ReferenceError: reference to undefined property "readystatechange" 

さらに、コンソールはwww.googleapis.com に遮断CORS要求(このドメインはmanifest.jsonにおけるCPSディレクティブでホワイトリストに登録されます)と Firebaseエラーを示すauth/network-request-failed

詳細な手順はReadmeにあります。

私の質問は:FirebaseはちょうどFirefoxで動作しない、または私はそれを動作させるために何かできることはありますでしょうか?特に、manifest.jsonにいくつかのものがありませんか、SpiderMonkeyがV8のJSを理解できないため、まずFirebase SDKをBabelにパイプする必要がありますか?

FirebaseのFirebaseをウェブページにロードすると、Firebaseは問題なく動作します。

EDITは:MWEは、次のように:

manifest.json

{ 
    "description": "Firebase & Firefox test case", 
    "homepage_url": "https://github.com/adimit/test-firebase", 
    "manifest_version": 2, 
    "name": "firebase-test-case", 
    "version": "1.0.0", 

    "icons": { 
    "64": "icons/logo-64.png" 
    }, 

    "browser_action": { 
    "browser_style": true, 

    "default_icon": { 
     "64": "icons/logo-64.png" 
    } 
    }, 

    "background": { 
    "scripts": [ 
     "firebase.js", "background.js" 
    ] 
    }, 

    "content_security_policy": "script-src 'self' 'unsafe-eval' https://www.gstatic.com/ https://*.firebaseio.com https://www.googleapis.com; object-src 'self'", 

    "permissions": [ 
    "tabs", 
    "storage" 
    ] 
} 

background.js

const clickButton =() => { 
    console.log("firebase object", firebase); 

    var config = { 
    apiKey: "AIzaSyABe5Ge-PSeZzfZU2EhllUI-w3fMb1nci8", 
    authDomain: "webext-firefox.firebaseapp.com", 
    databaseURL: "https://webext-firefox.firebaseio.com", 
    projectId: "webext-firefox", 
    storageBucket: "", 
    messagingSenderId: "909758240321" 
    }; 
    firebase.initializeApp(config); 

    const user = { 
    id: "[email protected]", 
    password: "test-password" 
    }; 

    firebase.auth().signInWithEmailAndPassword(
    user.id, 
    user.password 
).then(
    user => { 
     console.log("user", user); 
    }, 
    error => { 
     console.log("error", error); 
    } 
); 
}; 

chrome.browserAction.onClicked.addListener(clickButton); 

あなたがCDNからfirebaseをコピーする必要があります。 curl -LO "https://www.gstatic.com/firebasejs/4.0.0/firebase.js"のようなものが必要です。

私はあなたがそれを試してみたい場合は、あなたは私が結合した上記のレポを使用することをお勧めけれども。

+0

トピックを作成するには、問題を複製する[mcve]を含めるようにしてください。 Chrome拡張機能やFirefox WebExtensionsでは、ほとんどの場合*マニフェストを含める必要があります。json *とバックグラウンド、コンテンツ、および/またはポップアップスクリプト/ HTML、およびしばしばウェブページのHTML /スクリプトが含まれます。 (1)必要な動作、(2)特定の問題またはエラー、および(3)それを再現するために必要な最短のコードを含める必要があります。質問自体に*。また、[ここではどのような話題を聞くことができますか?](/ help/on-topic)、[ask]を参照してください。 – Makyen

+0

問題:MWE用のリポジトリ全体、つまり複数のファイルを含める必要があります。非常に長い質問になります。 –

+0

そこに、私はそれを含めた。リンクされたリポジトリを使用する方がおそらくもっと簡単ですが、WebExtensionを設定する方法が分かっていれば、これで十分です。 –

答えて

0

クロムが暗黙のうちにアドオンからwww.googleapis.comへの呼び出しを許可しているようだ、Firefoxは、しかし、しません。 Firefoxが報告されて

JavaScriptの厳格なエラーは悪影響の実行時の動作に影響を与えていないように見えます。

https://www.googleapis.com/*からmanifest.json:permissionsを追加すると、Firefoxが認証できないという問題が解決されます。

関連する問題