Electronはデスクトップアプリであり、Cookieは使えない。
しかし認証情報をファイルに保存するわけにはいかない。
適切な保管場所は、macOSならKeychain、LinuxならKeyring、WindowsならCredential Vaultだろう。
これらプラットフォームに合わせた方法で保存できるモジュールを紹介する。
node-keytar
node-keytarは、atom製のキーチェーン管理モジュール。
プラットフォームの違いを意識せずに機密情報を読み書きできる。
import keytar from 'keytar'
keytar.addPassword('service', 'account', 'password')
keytar.getPassword('service', 'account')
上記のように使い方は非常に直感的だ。
トラブルシューティング
自分が使用の際に陥った問題をまとめておく。
Electronのnodeのバージョンに合わせてコンパイルしていない
keytarはC++で書かれているのでインストール時にnode-gypでコンパイルされる。
もしうまく動かなかった場合は、Electronのバージョンに合わせて再コンパイルしてみよう。
cd node_modules/keytar
HOME=~/.electron-gyp node-gyp rebuild --target=1.2.6 --arch=x64 --dist-url=https://atom.io/download/atom-shell
--target
パラメータにElectronのバージョンを指定する。
ちなみに、Electronのバージョンに合わせてネイティブモジュールを再コンパイルしてくれるelectron-rebuildというのもある。
nodeが32bitで動いている
Electronが64bitで動いているなら、keytarもそれに合わせてコンパイルする必要がある。
現在のアーキテクチャが何bitなのか確認するには:
console.log(process.arch)