Symfony集成LinkedIn登录OAuth权限错误求助
LinkedIn OAuth登录集成(Symfony)当前规则与解决办法
一、当前LinkedIn权限的核心要求
- 旧API(v1)的
email、profile权限已彻底废弃,必须使用v2及以上版本的权限,且调用API时需明确指定版本号。 r_liteprofile(获取基础个人资料)、r_emailaddress(获取邮箱)权限的使用分场景:内部员工登录等封闭场景可直接启用;面向外部用户的公开应用,必须提交LinkedIn审核,说明权限具体用途,通过后才能使用。
二、针对你遇到的两个错误的解决办法
错误1:Not enough permissions to access: me.GET.NO_VERSION
- 问题根源:使用了废弃的旧权限,且未指定API版本。
- 解决步骤:
- 替换旧权限,改用
r_liteprofile和r_emailaddress。 - 调用LinkedIn接口时使用v2版本地址,例如
https://api.linkedin.com/v2/me,而非旧版v1地址。 - 在Symfony的OAuth配置中,将权限范围设置为
r_liteprofile r_emailaddress。
- 替换旧权限,改用
错误2:scopes are not authorized for your application
- 问题根源:LinkedIn应用未启用目标权限,或未通过权限审核。
- 解决步骤:
- 登录LinkedIn开发者后台,进入你的应用页面。
- 切换到「Products」标签页,找到「Sign In with LinkedIn」产品,点击「Request access」,如实填写权限使用场景(例如“用于用户登录Symfony平台,完成账号注册/绑定,仅获取基础个人资料与邮箱”),提交审核。
- 审核通过后,进入「Auth」标签页,在「OAuth 2.0 Scopes」中勾选
r_liteprofile和r_emailaddress并保存配置。 - 清除Symfony应用的OAuth缓存,重新测试登录流程。
三、Symfony配置注意事项
- 使用支持LinkedIn v2 API的OAuth库,例如
knpuniversity/oauth2-client-bundle的LinkedIn provider已适配v2版本。 - 客户端配置示例:
knpu_oauth2_client: clients: linkedin: type: linkedin client_id: '%env(OAUTH_LINKEDIN_ID)%' client_secret: '%env(OAUTH_LINKEDIN_SECRET)%' redirect_route: linkedin_check redirect_params: {} scopes: ['r_liteprofile', 'r_emailaddress'] - 获取用户信息时调用v2接口:
- 个人资料:
https://api.linkedin.com/v2/me?projection=(id,firstName,lastName) - 邮箱:
https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))
- 个人资料:
内容的提问来源于stack exchange,提问作者elemeNt
相关产品推荐
相关产品推荐

