goでfirebase認証ぉぉぉ

掲題の通り、なんですがgoでfirebase authenticationを使って認証を実装しました!

フロントはflutterでお友達が書いてくれています😃

該当コードはこんな感じです(細かい実装のお話は別記事にしようかと)(あとclean architecture)

https://github.com/kid2Ion/selfManageApp-go/blob/master/adapter/firebase/firebaseauth.go

認証の流れは?

はい、流れはこんな感じです

  1. フロントが認証に成功するとID token(jwt形式)を取得してくる
  2. httpのリクエストヘッダに埋め込んでバックエンドに渡す
  3. バックエンドはそいつを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

目次