You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next-Auth集成LinkedIn认证报错:OPError: 预期200 OK,得到403 Forbidden

Next.js 13 App Router + Next-Auth LinkedIn认证回调403 Forbidden解决办法
  • 先查LinkedIn应用的回调URL配置
    403大概率是这里出问题:

    • 确保LinkedIn后台「OAuth 2.0设置」里的回调URL,和你Next-Auth里的callbackUrl完全一致,包括http/https、端口号(本地开发要带:3000)
    • 格式必须是http://localhost:3000/api/auth/callback/linkedin(本地)或你的生产域名加后面的路径
    • 别漏加这个URL到LinkedIn的允许列表里
  • 检查LinkedIn应用的权限和状态

    • 如果应用还在「开发中」状态,只有你添加到「测试者」列表的LinkedIn账号才能正常授权,其他账号会被拦截
    • 确认你用的scope已经在LinkedIn后台获批,敏感scope需要人工审核,没通过的话调用会403
  • 手动指定LinkedIn Provider的端点
    试试覆盖Next-Auth默认的LinkedIn端点配置,避免默认值可能的问题:

    import LinkedInProvider from "next-auth/providers/linkedin";
    
    export const authOptions = {
      providers: [
        LinkedInProvider({
          clientId: process.env.LINKEDIN_CLIENT_ID,
          clientSecret: process.env.LINKEDIN_CLIENT_SECRET,
          authorization: {
            url: "https://www.linkedin.com/oauth/v2/authorization",
            params: {
              scope: "openid profile email", // 填你已获批的scope
              response_type: "code",
            },
          },
          token: { url: "https://www.linkedin.com/oauth/v2/accessToken" },
          userinfo: { url: "https://api.linkedin.com/v2/userinfo" },
        }),
      ],
      // 其他auth配置...
    };
    
  • 核对环境变量和服务器配置

    • 检查LINKEDIN_CLIENT_ID、LINKEDIN_CLIENT_SECRET有没有拼写错误、多余空格,确保和LinkedIn后台完全一致
    • 本地开发时NEXTAUTH_URL设为http://localhost:3000,生产环境设为你的域名,别写错
    • 生产环境确认服务器没拦截LinkedIn的回调请求,CORS配置允许LinkedIn的域名访问

内容的提问来源于stack exchange,提问作者Shakeel Zain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 14:53:31