Firebaseをよく使うようにあり、複数のGoogleアカウントでログインするようになった。
一回ログアウトしてログインするか、--reauth
つけてログインすれば、切り替えできるけど、
毎回切り替えるのがめんどくさいので、いろいろ調べてみたときの備忘録。
追記
firebase-tools v9.9.0から対応されたっぽい(*´ω`*)
いつもはこんな感じで毎回切り替えてる。。
# ログアウト&ログイン $ firebase logout $ firebase login # 再ログイン $ firebase login --reauth
@_monoさんがつぶやいてたのが良さそうだったので試してみた(´ω`)
違うアカウントの時に再認証せずにfirebase CLIコマンドが使えるプチツール便利だ( ´・‿・`)
— mono (@_mono) June 1, 2020
ローカルに保存済みのトークンを `firebase-multi use <your-project> firebase deploy` のように指定して実行( ´・‿・`)https://t.co/sou4FBS25d
firebase-multi
firebase-multiは、Firebase CLIを複数アカウントでログインして使うためのヘルパーコマンド。
firebase login:ci
で取得したトークンを保存でき、トークンを使ってFirebase CLIを利用できるようにしている。
インストール
まずは、インストール
$ yarn add -g firebase-multi # or $ npm i -g firebase-multi
これで、firebase-multi
コマンドが使えるようになる。
firebase-multiでできること
薄いヘルパーなので、トークンと名前の保存/取得/削除のみという感じ。
# 保存 $ firebase-multi set <firebase-project> <ci token> # 削除 $ firebase-multi unset <firebase-project> # 取得 $ firebase-multi get <firebase-project> # トークンを使ったFirebase CLIの実行 $ firebase-multi use <firebase-project> <command>
<firebase-project>
は任意の名前をつける感じ。
READMEには特に注意書きはないけど、
.(ピリオド)
は含まないほうが良さそう
使い方
トークンの取得
まずは、firebase login:ci
でトークンを取得。
ブラウザで該当のアカウントを選択して、認証する。
$ firebase login:ci Visit this URL on this device to log in: https://accounts.google.com/o/oauth2/auth?..... Waiting for authentication... ✔ Success! Use this token to login on a CI server: <ci token> Example: firebase deploy --token "$FIREBASE_TOKEN"
<ci token>
の部分に表示されたトークンをコピーしておく。
トークンの保存
次に、取得したトークンをfirebase-multi
に保存。
$ firebase-multi set mine <ci token>
これで準備はOK。
firebase-multiを使って、Firebase CLIを実行する
こんな感じで各コマンドを使えるようになる。
$ firebase-multi use mine firebase projects:list
┌────────────────────────┬──────────────────────┬────────────────┬──────────────────────┐
│ Project Display Name │ Project ID │ Project Number │ Resource Location ID │
├────────────────────────┼──────────────────────┼────────────────┼──────────────────────┤
# ... 略
毎回これを打つのはつらいので、aliasとかを設定するといいかも。
$ alias firebase-mine="firebase-multi use mine firebase" $ firebase-mine projects:list
残念ながらlistコマンドはない...
コマンドはないけど、以下の場所に保存されてるので、確認できる。
$ cat ~/.config/configstore/firebase-multi.json { "projects": { "mine": "<個人用のトークン>", "projectA": "<projectAのトークン>", "projectB": "<projectBのトークン>" }, "version": 1 }
configstoreを使ってるよう。
<firebase-project>
に.(ピリオド)
を含んでいると、ネストするっぽい。
$ firebase-multi set projectA.teamZ AAA $ firebase-multi set projectA.teamY AAA $ cat ~/.config/configstore/firebase-multi.json { "projects": { "projectA": { "teamZ": "AAA", "teamY": "AAA" } }, "version": 1 }
カテゴリ分けできるのはいいけど、カテゴリに当たる部分を指定して、
unset
すると全部消えてしまうので注意。
$ firebase-multi unset projectA $ cat ~/.config/configstore/firebase-multi.json { "projects": { }, "version": 1 }
事故らないためにも、<firebase-project>
に.(ピリオド)
はないほうが良さそう。
以上!!