如何获取LinkedIn用户URN并解决/userinfo接口403权限问题
解决LinkedIn API权限不足及获取用户URN问题
核心问题拆解
你现在碰到两个关键问题:调用userinfo接口返回403权限不足,以及拿不到用户URN来实现内容分享。本质是权限范围用错了,而且选的接口不符合LinkedIn V2 API规范。
一步步解决
1. 替换过时的权限范围
LinkedIn V2 API已弃用旧的profile权限,必须换成V2对应的权限:
- 把原授权链接里的
profile改为r_liteprofile(该权限用于获取用户基本信息,包括URN) - 保留
w_member_social(发布内容到用户主页的必填权限)、r_emailaddress(如需获取用户邮箱则保留)、openid(仅使用OIDC相关功能时需要)
更新后的授权请求链接:
https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id=${clientId}&redirect_uri=${redirectUri}&state=123456&scope=r_liteprofile%20r_emailaddress%20w_member_social%20openid
2. 用正确接口获取用户URN
无需调用userinfo,直接使用v2/me接口即可拿到用户URN(返回结果中的id字段即为用户URN):
- 请求方式:GET
- 请求头:
Authorization: Bearer {你的access_token} - 请求地址:
https://api.linkedin.com/v2/me
响应示例:
{ "id": "urn:li:person:abc123XYZ", "firstName": { "localized": { "en_US": "John" } }, "lastName": { "localized": { "en_US": "Doe" } } }
3. 检查应用后台权限配置
如果替换权限后仍出现权限问题,需登录LinkedIn应用后台核对:
- 进入「Products」页面,确认已添加「Share on LinkedIn」(对应
w_member_social权限)和「Sign In with LinkedIn」(对应r_liteprofile、openid权限)产品 - 提交应用审核:
w_member_social这类权限必须通过LinkedIn审核才能对普通用户生效,未审核通过时仅测试账号可调用
4. 使用URN实现内容分享
拿到用户URN后,调用v2/shares接口即可发布内容到用户主页,示例请求:
- 请求方式:POST
- 请求头:
Authorization: Bearer {你的access_token}、Content-Type: application/json - 请求地址:
https://api.linkedin.com/v2/shares - 请求体示例:
{ "owner": "urn:li:person:abc123XYZ", // 替换为实际获取到的用户URN "text": { "text": "通过第三方应用分享的测试内容" }, "distribution": { "linkedInDistributionTarget": {} } }
内容的提问来源于stack exchange,提问作者Anatolii Landyshev
相关产品推荐
相关产品推荐

