nextauth signIn 未在 Firebase 身份验证中创建用户

Tyl*_*Kim 5 firebase next-auth

我目前正在为我的应用程序使用 NextAuth + Firebase 身份验证。下面的代码完美地处理身份验证和用户会话,但我注意到它实际上并没有创建 Firebase 身份验证下列出的用户;这意味着我无法跟踪 firebase 的本机构建的 DAU 和其他指标。

我已经查看了此文档,但我不太确定这如何具体适用于 nextAuth。如果有人分享他们的经验,将不胜感激!

LoginButton.tsx

import { useSession, signIn, signOut } from 'next-auth/react';

const ScraftIcon = () => {
  const { data: session } = useSession();

  return (
    <Tooltip title="Log In">
      <button
        onClick={() => signIn('google')}
      >
        <MdLogin size="30" />
      </button>
    </Tooltip>
  );
};

export default ScraftIcon;
Run Code Online (Sandbox Code Playgroud)

[...nextauth].ts

import NextAuth from "next-auth";
import GoogleProvider from "next-auth/providers/google";
import { FirestoreAdapter } from "@next-auth/firebase-adapter";
import { cert } from "firebase-admin/app";
import "firebase/firestore";

export const authOptions = {
  // Configure one or more authentication providers
  providers: [
    GoogleProvider({
      clientId: process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID!,
      clientSecret: process.env.NEXT_PUBLIC_GOOGLE_CLIENT_SECRET!,
    }),
    // ...add more providers here
  ],
  adapter: FirestoreAdapter({
    credential: cert({
      projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,
      clientEmail: process.env.NEXT_PUBLIC_FIREBASE_CLIENT_EMAIL,
      privateKey: process.env.NEXT_PUBLIC_FIREBASE_PRIVATE_KEY,
    }),
  }),
};
export default NextAuth(authOptions);


Run Code Online (Sandbox Code Playgroud)

小智 0

我遇到了类似的问题,所以浏览网络让我在 GitHub 上找到了这个讨论。我认为这里提供的答案可以解决您的问题:https://github.com/nextauthjs/next-auth/discussions/7157

按照此方法,您需要生成自定义令牌,将其添加到会话中,然后在客户端从会话中检索令牌并使用它登录 Firebase。