Firebase Admin can't seem to be used in Server Action
Unanswered
Nile perch posted this in #help-forum
Nile perchOP
In session.ts (react server action component)
I want to use it in a client component like so
"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("/");
}
});
};