Next.js Discord

Discord Forum

Firebase Admin can't seem to be used in Server Action

Unanswered
Nile perch posted this in #help-forum
Open in Discord
Nile perchOP
In session.ts (react server action component)

"use server";

/// Other definitions

interface CreateSessionPayload {
  accessToken: string;
  fromGoogle?: boolean;
}

export async function createSession(
  createSessionPayload: CreateSessionPayload
) {
  if (createSessionPayload.fromGoogle) {
    // Removing this block of code avoids the error
    const adminApp = await initAdmin();
    const adminAuth = getAuth(adminApp);

    adminAuth
      .verifyIdToken(createSessionPayload.accessToken)
      .then((decodedToken) => {
        const expiresAt = new Date(decodedToken.exp * 1000);
        cookies().set("session", createSessionPayload.accessToken, {
          httpOnly: true,
          secure: true,
          expires: expiresAt,
          sameSite: "lax",
          path: "/",
        });
      })
      .catch((error) => {
        return null;
      });
      // end of block
  }

  const payload = await decrypt(createSessionPayload.accessToken);

  if (!payload) {
    return null;
  }

  const expiresAt = new Date(payload.exp! * 1000);
  cookies().set("session", createSessionPayload.accessToken, {
    httpOnly: true,
    secure: true,
    expires: expiresAt,
    sameSite: "lax",
    path: "/",
  });
}


I want to use it in a client component like so

const handleSubmit = async () => {
    signInWithGoogle().then(async (user) => {
      if (user) {
        const accessToken = await user.user.getIdToken();
        await createSession({ accessToken: accessToken, fromGoogle: true });
        router.push("/");
      }
    });
  };

0 Replies