我根据 next-auth 文档配置了我的应用程序,但是当我尝试路由到登录页面并进行身份验证时,我在网址上收到此 next-auth 错误 - “https://next-auth.js.org/errors#登录_oauth_错误”。
。
当我检查我的终端时,我得到有关错误的更多详细信息,如下所示:
这是堆栈跟踪:
https://next-auth.js.org/errors#signin_oauth_error expected 200 OK, got: 404 Not Found {
error: {
message: 'expected 200 OK, got: 404 Not Found',
stack: 'OPError: expected 200 OK, got: 404 Not Found\n' +
' at processResponse (webpack-internal:///(rsc)/./node_modules/.pnpm/[email protected]/node_modules/openid-client/lib/helpers/process_response.js:37:15)\n' +
' at Issuer.discover (webpack-internal:///(rsc)/./node_modules/.pnpm/[email protected]/node_modules/openid-client/lib/issuer.js:142:22)\n' +
' at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n' +
' at async openidClient (webpack-internal:///(rsc)/./node_modules/.pnpm/[email protected][email protected][email protected][email protected]/node_modules/next-auth/core/lib/oauth/client.js:12:18)\n' +
' at async getAuthorizationUrl (webpack-internal:///(rsc)/./node_modules/.pnpm/[email protected][email protected][email protected][email protected]/node_modules/next-auth/core/lib/oauth/authorization-url.js:88:20)\n' +
' at async Object.signin (webpack-internal:///(rsc)/./node_modules/.pnpm/[email protected][email protected][email protected][email protected]/node_modules/next-auth/core/routes/signin.js:21:30)\n' +
' at async AuthHandler (webpack-internal:///(rsc)/./node_modules/.pnpm/[email protected][email protected][email protected][email protected]/node_modules/next-auth/core/index.js:259:36)\n' +
' at async NextAuthRouteHandler (webpack-internal:///(rsc)/./node_modules/.pnpm/[email protected][email protected][email protected][email protected]/node_modules/next-auth/next/index.js:50:30)\n' +
' at async NextAuth._args$ (webpack-internal:///(rsc)/./node_modules/.pnpm/[email protected][email protected][email protected][email protected]/node_modules/next-auth/next/index.js:85:24)\n' +
' at async D:\\PhpstormProjects\\AlternateLtd\\moti\\moti-frontend\\node_modules\\.pnpm\\[email protected][email protected][email protected]\\node_modules\\next\\dist\\compiled\\next-server\\app-route.runtime.dev.js:6:62499',
name: 'OPError'
},
providerId: 'azure-ad-b2c',
message: 'expected 200 OK,
套餐版本:
“下一个”:“13.5.5”, “下一个验证”:“^4.24.6”,
这是我的代码片段。
api\auth\[...nextauth]\route.ts
import NextAuth from "next-auth";
import AzureADB2CProvider from "next-auth/providers/azure-ad-b2c";
if (
!process.env.AZURE_B2C_TENANT_ID ||
!process.env.AZURE_B2C_TENANT_NAME ||
!process.env.AZURE_B2C_CLIENT_ID ||
!process.env.AZURE_B2C_CLIENT_SECRET ||
!process.env.AZURE_B2C_PRIMARY_USER_FLOW ||
!process.env.NEXT_AUTH_SECRET
) {
throw new Error("Auth required env variables are not set");
}
export const authOptions = {
providers: [
AzureADB2CProvider({
tenantId: process.env.AZURE_AD_B2C_TENANT_NAME as string,
clientId: process.env.AZURE_B2C_CLIENT_ID as string,
clientSecret: process.env.AZURE_B2C_CLIENT_SECRET as string,
primaryUserFlow: process.env.AZURE_B2C_PRIMARY_USER_FLOW as string,
authorization: { params: { scope: "offline_access openid" } },
checks: ["pkce"],
client: {
token_endpoint_auth_method: "none",
},
}),
],
secret: process.env.NEXT_AUTH_SECRET,
};
export const handler = NextAuth(authOptions);
export { handler as GET, handler as POST };
为了让下一个身份验证正确导航到 Azure AD B2C 登录/注册表单,我必须向 AzureADB2CProvider 添加一个“wellKnown”属性,它起作用了
为了获得这个众所周知的财产,
providers: [
AzureADB2CProvider({
...,
wellKnown: https://${process.env.AZURE_B2C_TENANT_NAME}.b2clogin.com/${process.env.AZURE_B2C_TENANT_NAME}.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=${process.env.AZURE_B2C_PRIMARY_USER_FLOW},
...
}),]