Функция в signIn.then() выполняется до завершения самого signIn NextAuth

Ожидание: по клику на кнопку сначала вызывается signIn, чтобы войти через GitHub, а затем вызывается ServiceSignIn, в котором создается сессия.

<button onClick={() => {
    signIn("github").then(() => ServiceSignin());
}}/>
export async function ServiceSignIn() {
    await createSession(id);
}

Но еще до открытия страницы GitHub со входом, а тем более еще до завершения авторизации, сессия создается. Как такое может быть?


Ответы (1 шт):

Автор решения: Fromexx

Вообще, главная проблема заключается в том, чтобы после отработки signIn вызвать какую-то другую функцию. Получилось достичь такого только через костыль, а именно - указать callbackUrl на страницу, на которой и вызовется нужная функция.

<button onClick={() => {
    signIn("github", { callbackUrl: "/gateway" });
}}/>
'use client'

import { ServiceSignin } from "@/services/ServiceAuthActions";
import { useEffect } from "react";

export default function Gateway() {
    useEffect(() => {
        const Actions = async () => {
            await ServiceSignin();
        }

        Actions();
    }, []);
}
→ Ссылка