掲題の通り、なんですがgoでfirebase authenticationを使って認証を実装しました!
フロントはflutterでお友達が書いてくれています😃
該当コードはこんな感じです(細かい実装のお話は別記事にしようかと)(あとclean architecture)
https://github.com/kid2Ion/selfManageApp-go/blob/master/adapter/firebase/firebaseauth.go
認証の流れは?
はい、流れはこんな感じです
- フロントが認証に成功するとID token(jwt形式)を取得してくる
- httpのリクエストヘッダに埋め込んでバックエンドに渡す
- バックエンドはそいつをverify()する
hmm
で困ったこととしてgoのsdkではid tokenを生成できなかった。。
なのでテストするたびフロントで生成しないといけないの?となりました
そこで色々調べていたらREST APIでできるとあったのでやってみると簡単にできました〜〜
terminalからID tokenを取得する方法
- signupの場合
curl 'https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=[hogehoge]' \
-H 'Content-Type: application/json' \
--data-binary '{"email":"[fugafuga]","password":"[piyopiyo]","returnSecureToken":true}'
- signinの場合
curl 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=[hogehoge]' \
-H 'Content-Type: application/json' \
--data-binary '{"email":"[fugafuga]","password":"[piyopiyo]","returnSecureToken":true}'
keyの後にはAPIkeyを入れてください(firebase consoleから確認できます)😃
ふう、これでバックエンドのみでも認証とおせる。めでたし
参考にさせていただいた記事
https://qiita.com/kazakago/items/892a8c5df76a912f1d82
https://cloud.google.com/identity-platform/docs/use-rest-api?hl=ja#section-sign-in-email-password