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

使用Passport.js实现LinkedIn OAuth时的权限问题求助

解决LinkedIn OAuth 403权限不足(GET /me)问题

核心原因

你遇到的问题是LinkedIn OAuth权限体系已更新,旧的basicprofile权限已被废弃,且标准OIDC scope(profile/email)无法单独覆盖GET /me接口的访问权限。

解决方案步骤

  • 替换为LinkedIn新版权限:将Passport.js配置中的scope替换为LinkedIn v2 API要求的权限:

    scope: ['openid', 'r_liteprofile', 'r_emailaddress']
    
    • r_liteprofile:授权访问用户基本信息(对应GET /me接口)
    • r_emailaddress:授权获取用户邮箱
    • openid:用于OpenID Connect认证流程
  • 确认开发者后台权限配置:登录LinkedIn开发者控制台,进入你的应用→「Sign In with LinkedIn」产品,确保已启用r_liteprofile和r_emailaddress权限(需和你配置的scope一一对应)。

  • 指定API版本:在Passport的LinkedInStrategy配置中添加apiVersion: 'v2',确保调用的是LinkedIn v2 API(旧版v1接口已不再支持新权限):

    passport.use(new LinkedInStrategy({
      clientID: process.env.LINKEDIN_CLIENT_ID,
      clientSecret: process.env.LINKEDIN_CLIENT_SECRET,
      callbackURL: "http://your-domain.com/auth/linkedin/callback",
      scope: ['openid', 'r_liteprofile', 'r_emailaddress'],
      apiVersion: 'v2' // 必须指定v2版本
    }, (accessToken, refreshToken, profile, done) => {
      // 处理用户信息逻辑
      done(null, profile);
    }));
    
  • 强制重新授权:如果之前已有用户授权过你的应用,需要让用户重新登录授权——旧的access_token不包含新添加的权限,必须通过重新授权获取新的token。

额外说明

LinkedIn对OIDC标准scope的映射需要配合自身的权限使用,仅配置openid/profile/email无法满足GET /me的权限要求,必须显式声明r_liteprofile这个LinkedIn特有的权限。

内容的提问来源于stack exchange,提问作者T. Xplicit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 13:07:08