Googleログイン認証をTypeScriptで実装する

Googleログイン認証をTypeScriptで実装する

Firebase

メモ的な感じでGoogleログイン認証をTypeScriptで実装した内容をまとめます。認証はFirebase Authenticationを使用しています。

UseCase層でGoogle認証のロジックを実装する

流れとしてはFirebase AuthenticationでGoogle認証した後、DBにユーザー情報を問い合わせます。

ユーザー情報がなかったら新規登録としてユーザ登録します。ユーザーログイン認証完了後はmypageに遷移し、認証情報をstateに登録します。

ちなみにUseCaseのUTはこんな感じになりました。あと登録パターンなどのシナリオがいくつかあるといった感じです。

Clean Architecutureをベースにレイヤリングしているので、テストは書きやすかったです。

 

GatewayでDomainに変換する

UseCaseのthis.authGateway.signInWithGoogle(auth)でFirebase AuthenticationにGoogle認証しているところをピックアップして、Gatewayの実装を取り上げます。

Gatewayとしては、DriverでサードパーティであるFirebase Authenticationを呼び出した返り値を、このアプリケーション内のコアとなるDomainに変換してUseCaseに返します。

つまり、Gatewayが外部とアプリケーションの境界部分を担っている感じです。今回は、CredentialUserというDomainに変換して、UseCaseに返しています。

 

Driverで実際にGoogle認証する

実際にGoogle認証するのはこのDriverになります。DriverではGoogleAuthProvider()からsignInWithPopup()を呼び出し、認証した結果を返します。

本来はDriverで使用するエンティティを用意して、その型に詰めてからGatewayに返してあげる方が、アプリケーションとサードパーティとの切り分けができてより良い気もしますが、一旦ここではそのままGatewayに返しています。

すんごいざっくりですが、メモ的な感じでまとめました。