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

LinkedIn OAuth 2.0认证未获取refresh_token,如何获取新access_token?

解决LinkedIn OAuth 2.0未获取refresh_token时的新access_token获取问题

首先得明确:LinkedIn的refresh_token并不是默认返回的——它只会在首次授权请求中包含offline_access权限的情况下才会下发。如果你的授权请求没加这个权限,或者用户已经授权过你的应用(没有重新触发带offline_access的授权),就只会拿到access_token和expires_in。

下面分两种场景给出解决方案:

场景1:可以引导用户重新触发授权流程

这是最直接的解决方式,也是唯一能拿到refresh_token的途径:

  • 修改授权请求的scope参数,必须加入offline_access权限。比如你的scope原本是r_liteprofile email_address,要改成:
    scope=r_liteprofile email_address offline_access
    
    (如果是URL请求,记得对空格做URL编码,变成r_liteprofile%20email_address%20offline_access)
  • 确保用户是首次授权,或先取消现有授权:如果用户之前已经授权过你的应用,即使你加了offline_access,LinkedIn也不会返回新的refresh_token。你需要引导用户先去LinkedIn的「设置与隐私」→「应用和网站」→「已授权的应用」里取消对你应用的授权,然后再重新走授权流程。
  • 完成授权后,你就能在响应中拿到refresh_token,之后就可以用它来刷新access_token了:发送POST请求到https://www.linkedin.com/oauth/v2/accessToken,参数包括:
    grant_type=refresh_token
    client_id=你的客户端ID
    client_secret=你的客户端密钥
    refresh_token=拿到的刷新令牌
    

场景2:无法引导用户重新授权(access_token已过期且无refresh_token)

这种情况没有捷径可走——LinkedIn不支持在没有refresh_token且用户未重新授权的情况下获取新的用户级access_token。你只能:

  • 提示用户重新登录授权,按照场景1的流程获取新的access_token和refresh_token;
  • 如果你的应用有不需要用户上下文的操作,可以考虑使用客户端凭证流(Client Credentials Flow)获取应用级的access_token,但这种token只能访问应用自身的数据,无法访问用户的个人数据。

额外注意事项

  • LinkedIn的refresh_token目前是长期有效的,但如果用户取消了对你应用的授权、修改了LinkedIn密码,或者你的应用被LinkedIn封禁,refresh_token会立即失效;
  • 每次用refresh_token刷新access_token时,LinkedIn可能会返回一个新的refresh_token(虽然不是强制的),建议你用新的refresh_token替换旧的,以避免后续刷新失败。

内容的提问来源于stack exchange,提问作者Soumya Bongani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:36:17