Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8872

firebase authのユーザー情報からトークン情報を取り出す簡単なスクリプトをnodeでつくる

$
0
0

モチベーション

最近は、クライアント(iOSやAndroid, Webクライント)とAPIサーバを別立てして開発していくことは多いと思います。

弊社も例にもれず、こういった構成で開発をしています。

なおAPIサーバのユーザー認証は、firebaseのトークンをJWT認証することで実現しています。
ただし、下記の理由でトークンの扱いが多少面倒なので、今回スクリプトを書いて解消したいと思います。

  • APIサーバをRuby on Railsで開発している。しかし、firebaseはRuby向けのSDKを公開していない(2020年7月時点)。
  • firebaseのトークンは1時間で有効期限がくる

ゴール

  • nodejs経由でfirebaseにアクセスし、トークンを取り出す処理をコンソールアプリを作成する

正直言語はなんでも良いのです。
今季は、SDKが豊富に用意されている、コンソールアプリを作りやすい、という理由でnodejsを選択しています。

環境

  • macOS Mojave Version10.14.4
  • nodejs v12.13.0
  • npm 6.14.5

※ Windows環境では未検証

前提

  • javascriptの基本知識がある
  • node, npmの基礎知識がある
  • firebase consoleでユーザ作成されている

スクリプト

1. 事前準備① firebaseの認証情報を取得する

firebase consoleにアクセスし、nodejsからfirebaseへ接続するための認証情報を取得します。

1.1. firebase consoleにアクセス

Pasted_Image_2020_07_15_9_29.png

1.2. 認証情報をコピー

設定 > 全般 > マイアプリ > ウェブアプリ を選択。
firebaseConfig部分をコピーして控えておきます。

Pasted_Image_2020_07_15_9_31.png

2. 事前準備② nodeプロジェクトの作成

2.1. nodeプロジェクトの作成

適当なフォルダを作成する。

mkdir firebase_authentication
cd firebase_authentication

# npm initの質問は、何も考えずEnterでOK
npm init 

package.jsonが作成されていればOKです。

~/firebase_authentication❯ ls
total 8
drwxr-xr-x    3 TomoakiTANAKA  staff    96 Jul 15 09:42 .
drwxr-xr-x+ 164 TomoakiTANAKA  staff  5248 Jul 15 09:43 ..
-rw-r--r--    1 TomoakiTANAKA  staff   219 Jul 15 09:42 package.json

2.2. firebaseSDKのインストール

npm install firebase

package.jsonにfirebaseが追加されます。

package.json
+"dependencies":{+"firebase":"^7.16.0"+}

3. スクリプト作成

mkdir scripts
cd scripts
touch firebase_token.js
firebase_token.js
constfirebase=require('firebase/app');constfirebaseAuth=require('firebase/auth');constreadline=require('readline').createInterface({input:process.stdin,output:process.stdout});// firebase consoleから取得した認証情報constfirebaseConfig={apiKey:"AIzaS.....",authDomain:"hogehoge-foobar.firebaseapp.com",databaseURL:"https://hogehoge-foobar.firebaseio.com",projectId:"hogehoge-foobar",storageBucket:"hogehoge-foobar.appspot.com",messagingSenderId:"532........",appId:"1:532.......:web:xxxxxxxxxxxxxxx",measurementId:"G-xxxxxxxxxxx"};// 認証したいメールアドレスconstemail='hogehoge@eversense.co.jp';// パスワードの読み込みreadline.question(`input ${email}'s password:`,(password)=>{showFirebaseIdToken(email,password);readline.close();});// firebaseにアクセスしトークンを取得、表示するfunctionshowFirebaseIdToken(email,password){// firebase appの初期化constapp=firebase.initializeApp(firebaseConfig);// メール認証firebase.auth().signInWithEmailAndPassword(email,password).then((result)=>{constfirebaseAuthUser=result.user;firebaseAuthUser.getIdToken(true).then((idToken)=>{console.log(idToken);}).catch((error)=>{console.log(error);});}).catch(function(error){console.log(error);});}

実行方法

node scripts/firebase_token.js

まとめ

今までログに認証情報を吐き出して、コピペして…というイケてないフローでしたが、これでだいぶ開発体験が向上しました。
あと、記事作成中に、firebase CLI使えばいんじゃね?と思いました。

まぁnodeベースでかければちょっとした処理を試せるので、これはこれでいいかなと思います。


Viewing all articles
Browse latest Browse all 8872

Trending Articles