TypeError:“client.client_secret”属性必须是非空字符串 - SvelteKit 和 Auth.js

问题描述 投票:0回答:1

我有一个 SvelteKit 应用程序,我想在其中通过 Auth.js 库启用身份验证。

我的项目设置如下:

src/hooks.server.js

import { SvelteKitAuth } from '@auth/sveltekit';
import GoogleProvider from '@auth/core/providers/google';
import { GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET } from '$env/static/private';

export const handle = SvelteKitAuth({
    providers: [GoogleProvider({ clientId: GOOGLE_CLIENT_ID, clientSecret: GOOGLE_CLIENT_SECRET })],
});

src/routes/protected/+layout.server.js

import { redirect } from '@sveltejs/kit';

export const load = async (event) => {
    const session = await event.locals.getSession();

    if (!session) {
        throw redirect(307, 'auth/signin');
    }

    return {
        session
    };
};

src/routes/protected/+page.svelte

<h1>Protected route</h1>

.env

GOOGLE_CLIENT_ID=MY_GOOGLE_CLIENT_ID
GOOGLE_CIENT_SECRET=MY_GOOGLE_CLIENT_SECRET

当我导航到受保护的路由 (/protected) 时,我会从 Auth.js 获得默认的 Google OAuth 弹出窗口。但是,当我选择 Gmail 帐户继续操作时,控制台会显示以下错误:

[auth][error][CallbackRouteError]: Read more at https://errors.authjs.dev#callbackrouteerror
[auth][cause]: TypeError: "client.client_secret" property must be a non-empty string

我尝试查看错误消息中给出的 URL 中提到的文档,但无法找出问题所在。我在设置项目时也在 Google Console 中配置了正确的域 URL。

google-oauth svelte sveltekit nextauth.js
1个回答
0
投票

SvelteKit 允许从客户端代码访问以 PUBLIC_ 开头的环境变量。所有其他环境变量都是私有的,只能通过服务器端代码访问。

https://joyofcode.xyz/sveltekit-environment-variables#static-for-variables-during-the-build-process

© www.soinside.com 2019 - 2024. All rights reserved.