技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

WSL から sfdx の認証を通す

前回対応した内容でいざ開発しようと思ったら、認証で行き詰ったのでその対処方法を記録する。

white-azalea.hatenablog.jp

まず、そのまま force:auth:web:login すると、失敗してしまう。
これは VSCode から行っても(Remote WSL している限りは)一緒で、これがなぜかというと、URL 認証を開始しておきながら、ブラウザを起動することができないから。

しかし、WSL には画面もクソもないわけで、まさかコンソールブラウザで認証するわけにもいかない…。
そこで、WSL の機能に頼り、Windows のアプリを WSL bash から呼び出せるように設定する。

  1. apt install xdg-utils でデスクトップアプリ由来のソフトを呼び出す機能をインストールする。WSL には GUI が無いのだから、当然入ってない。
    Debian -- sid の xdg-utils パッケージに関する詳細
  2. 適当なパスに、シェルを記述する。まぁめんどくさいので今回はユーザホーム直下に書いた。シェル名は start_chrome.sh で、中身はこんな感じ。mnt/ 以降は Windows のパスなので、ブラウザのパスを突っ込もう
    sh "/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe" $1:$2
  3. chmod +x start_chrome.sh で実行権限を与えとこうか。
  4. pwd で今のパスを拾っとく。今回打ったら /home/azalea だった。ここにシェルを書いたので、シェルのパスは /home/azalea/start_chrome.sh だ。
  5. .bashrc を開いて、最後に export BROWSER="/home/azalea/start_chrome.sh" と突っ込んでおく。
  6. source .bashrc を叩いて、設定を読み込む。

検証してみるにはコマンドラインxdg-open https://www.salesforce.com と打ち込んでみよう。
正しく設定されていれば、WindowsChrome が立ち上がるはずだ。

これが出来たら sfdx auth:web:login でブラウザを起動して認証しよう。

f:id:white-azalea:20210420204944p:plain