はじめに
Chrome 拡張機能で Firebase Authentication を使って認証する方法。
TL;DR
- Email/Password での認証は
signInWithEmailAndPasswordで実施- 次回以降ログインできるように Email/Password を Sync ストレージ に保存(※セキュリティ上の問題あり)
- Email/Password で認証後、トークン発行&保持 でもいけそうだけど試せてない
- Google 認証などの方法もあるが試せてない
Chrome 拡張機能で Firebase Authentication を使って認証する方法。
signInWithEmailAndPassword で実施Chrome 拡張機能で FontAwesome (FontAwesome 5) を使う方法を整理した。
<head> に <link> を差し込むwebfonts 配下一式、および css/all(.min).css を拡張機能内に配置all(.min).css の url(../webfonts/xxxx) を url(chrome-extension://__MSG_@@extension_id__/xxxx) に変更manifest.json で css/all(.min).css を読み込みmanifest.json の web_accessible_resources にフォント一式を追加Chrome 拡張機能で、同梱しているファイルにアクセスする方法について整理した。
本記事では、画像をページ中に追加表示する例を示す。
manifest.json で web_accessible_resources を指定* などのワイルドカードが使用できるchrome.extension.getURL で URL を取得して使うChrome 拡張機能で外部サイトへの HTTP リクエスト時に Request Headers をカスタマイズする方法について整理した。
User Agent を変更したり、Cookie を付与したり、色々とできるようになる。
chrome.webRequest.onBeforeSendHeaders を使うChrome 拡張機能を React などで構成された SPA で動作させる方法 で、background から JS を注入する方法を整理した。が、別要件で上手くいかないケースがあったのでメッセージドリブンで処理タイミングを通知する方法を整理した。
chrome.runtime.onMessage.addListener を使ってメッセージを待つchrome.tabs.sendMessage を使ってメッセージを送るchrome.tabs.onUpdated.addListener でタブの更新の検出や URL の絞り込みを行うとあるページ向けに作っていた拡張機能が上手く動作しなくなったので確認すると、React.js を利用した SPA に変更されていた。
リロードするとちゃんと動作するのだが、クリックなどでページ遷移すると拡張機能が動作しないので、対応方法について調べた。
続編: Chrome 拡張機能で background scripts から content scripts にメッセージを送信する
chrome.tabs.onUpdated.addListener でページ遷移を検知chrome.tabs.executeScript で JS を注入Chrome 拡張機能で CSV ファイルを生成してダウンロードする方法について整理した。
ほぼ JavaScriptでファイルダウンロード処理を実現する - Qiita の通り
new Blob でオブジェクトを生成createObjectURL で URL に変換<a href="..." download="hoge.csv"> でダウンロードVue.js を使って Chrome 拡張機能を開発する方法について簡単に整理した。
前回の記事 では、Kocal/vue-web-extension を使った Chrome 拡張機能の開発方法について調べた。が、「Kocal/vue-web-extension では Popup Page や Options Page で Vue.js を使うもの」、つまり「メインページ(メインコンテンツ?)側では使えないもの」という結論に至った。(※自分の中では、の話)
冷静に考えて「メインページ側に使えないわけがない」と思って、どのようにすれば実現できるかについて調査した。
実際に拡張機能を作ってリリースした話 : Vue.js を使ってChrome 拡張機能を作った話(はてなブックマークのコメントを Qiita 記事内に表示) - Qiita
vue.config.js を用意して vue-cli-service でビルドすれば動作することを確認manifest.json では chunk-vendors.js を先に読み込むChrome 拡張機能の開発をしていて、ファイルの変更後に毎回 chrome://extensions を開いて手動で更新するのがダルかったので、ファイルの変更を検知して自動で更新してくれる方法を調べた。
ほぼほぼ元記事通りの内容だけど、忘れないようにメモしておく。
manifest.json に "background": { "scripts": ["hot-reload.js"] } を追加chrome://extensions で読み込み(更新)