見出し画像

5/8.log

firebase+goの連携をしていた

実装をする予定はなかったのですが急に実装しなければならない場面がでてきて任されたので実装することにしました。firebase+フロントエンドフレームワークに関する情報は多いもののfirebase+サーバーサイドの情報となったら途端に減ります。その中でもgoに限定するとほんと少なくなります。

そんなことは言い訳でしかないのでとりあえず進めて行っていました。進捗としてはなんとかできました!以前フロント(next+typescript)での連携としてログイン、サインアップ、ログアウトができていたのでフロントはそれを流用しました。ちなみにgoに関してはfiberを使いました。

インフラ整備

前回はローカル環境で行っていたのでdocker環境を作成しました。go+node+mysql(今回は使いませんでしたが)のdocker-composeはmakefileやenvも含めてすでにテンプレ化してあるのでコピペするだけです。

バック実装

手順としてまずgoで認証不必要ルート、必須ルート2つを作成しました。両方簡単なメッセージを返すだけです。次にフロントから渡されたJWTが有効かどうかを判断するミドルウェアを作成しました。このミドルウェアが肝の部分ですね。トークンが有効でなければそのままステータスコード401を返すようにしました!またJWTを確認するだけでそのユーザーのメールなどの情報がみれるので追加の呼び出しは必要ないみたいです!とても便利です。これでバックエンドは完了。

フロント実装

フロントエンドはそれらのapiを叩くようなページを作成し例外処理追加、メッセージの表示をするようにしました。前回は認証を行うだけでjwtの取り出し、保存はしていなかったのでそのロジックも実装しました。ページの作成自体はあまり時間がかからなかったのですがjwtの取り出し、保存には結構時間がかかりました。今回はページ訪問初回にのみjwt取り出しローカルストレージに保存を行うようにしました。トークンを取り出す関数(getIdToken)も並行処理が求められるようなものだったので扱いづらかったです。

進捗まとめ

このような手順でとりあえずgo+firebaseに関しても一通り使い方はわかりました!時間はかかったものの思った以上に簡単でした。結構気が乗ったのでgo+next+firebaseのログインテンプレートでも作って次回のアプリで使おうか検討しています。


この記事が気に入ったらサポートをしてみませんか?