LoginSignup
0
0

More than 1 year has passed since last update.

NextAuthのFirebaseAdapterを使ったら詰まりまくった件

Last updated at Posted at 2023-02-09

はじめに

2023年2月10日現在、NextAuthのadapterであるFirebaseAdapterを使用するうえで詰まりまくったので備忘録として残しておく。
2023年2月27日時点でドキュメントの正常化とfirebase-adapter@2.0.1のリリースによりここに記載されている内容は無事修正されました。

何が起こったか

ここのドキュメントを参照しながら開発していたのだが、コピペして実行しても上手く動かない…
NextAuth.jsとAuth.jsてドキュメント2つあって実装方法少し違うんだけどなにこれ???

結論

ここ見ろ

流石にこれだけでは怒られそうなので補足

1.NextAuth.jsとAuth.jsとは?

元々あったのがNextAuth.jsという名前のライブラリ。
最近はSvelteKitやSolidStartにも対応したからAuth.jsという名前に変更になっただけ。
ただ、ドキュメントがNextAuth.jsとAuth.jsに分かれて少し混乱した。
NextAuth.jsのドキュメントはAuth.jsのドキュメントに順次移行しているらしいがしばらくかかりそう。

2.存在しないNode Module

この記事を見ている頃には直っているかもしれないが、
Installationのnpm install next-auth @next-auth/firebase-admin-adapter firebase-adminという部分は間違い。
正しくはnpm install next-auth @next-auth/firebase-adapter firebase-admin

これはただただドキュメントがミスっていただけなので割とすぐ気づいた。
npm君から「そんなモジュールねえよ(E404)」と言われて調べてみたら4日前に@next-auth/firebase-adapter2.0.0にバージョンアップしていた。インストールしたのはほぼ同時期なのでびっくり。
恐らく何かしらの手違いでfirebase-admin-adapterになっただけ。

そもそも何故メジャーバージョンが上がったのか?

Firebaseを使っている人は知っていると思うが、FirebaseのSDKは2つある。
クライアントサイドで動くfirebaseSDK(npm i firebase)とサーバーサイドで動くfirebaseAdminSDK(npm i firebase-admin)である。
それぞれ役割が違うのでインストールする時は注意。

で、どうやらクライアントSDKで実装されていた旧バージョンはFirestore Rulesを開放するとかいうとんでもない欠点があったらしい。

対象のGitHubスレッド
https://github.com/nextauthjs/next-auth/pull/5628#issue-1420003540

これを解消するためにAdminSDKを使用した方法に実装し直したのが2.0.0というわけである。

3.なんか動かない

バージョンアップに対応した実装方法のはずなのに動かない事態が発生。
何故かERR_MODULE_NOT_FOUNDを吐く。
これはもしやライブラリのバグではと思いGitHubを確認すると以下のような発言が…

何と昨日回答されていた
ありがとう海外ニキ…

というわけでひとまず直接node_modulesからfirebase-adapterを参照インポートすることで無事解決。

実際にログインすると自動でデータベースにuserやsessionが作られたのでとりあえずヨシとした。

まとめ

  1. NextAuth.js=Auth.js
    ただしドキュメント内容は少し違うので最新のAuth.jsを見る。
  2. @next-auth/firebase-adapterver1.xはセキュリティ的な面で問題があるのでver2.xを使う。
  3. 困ったらGitHubを見てみる(必ず解決するとは言っていない)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0