LinkedIn OAuth2 Client Credentials授权令牌获取失败求助
既然你在LinkedIn开发者REST控制台能正常拿到数据,说明你的应用权限、Client ID/Secret本身是没问题的,问题肯定出在本地请求的配置细节上,我给你列几个高频踩坑点:
检查授权流程的端点是否正确
别把授权码流程的端点搞混了:获取授权码要用https://www.linkedin.com/oauth/v2/authorization,兑换令牌要用https://www.linkedin.com/oauth/v2/accessToken,本地请求时别写错域名或者路径,比如少写oauth/v2这种低级错误。验证重定向URI完全匹配
LinkedIn对重定向URI的校验非常严格,必须和你在开发者后台配置的完全一致——包括HTTP/HTTPS、域名、端口、路径,哪怕多一个斜杠或者大小写不对都会报错。比如后台配的是http://localhost:3000/callback,本地请求就不能写成http://localhost:3000/callback/或者http://127.0.0.1:3000/callback。检查请求参数的格式和编码
兑换令牌的时候,要确保参数是x-www-form-urlencoded格式,而不是JSON。很多人本地用POST请求的时候直接传JSON体,这就会报错。另外,参数里的client_id、client_secret、code、grant_type(必须是authorization_code)这些字段一个都不能少,也不能拼错。确认本地请求没有被代理或防火墙拦截
有些公司内网的代理或者本地防火墙会拦截对LinkedIn的请求,导致令牌兑换失败。你可以试试用curl在本地直接发请求测试:curl -X POST 'https://www.linkedin.com/oauth/v2/accessToken' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'grant_type=authorization_code&code=YOUR_AUTH_CODE&redirect_uri=YOUR_REDIRECT_URI&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET'如果curl请求能成功,说明是你本地代码的请求逻辑有问题;如果curl也失败,那大概率是网络层面的拦截。
查看错误响应的具体信息
别只看“授权失败”这种模糊提示,仔细看返回的JSON里的error和error_description字段,比如invalid_redirect_uri、invalid_client、invalid_code这些,每个错误都对应明确的问题,照着提示改就行。
如果以上都排查过还是有问题,可以把本地请求的具体代码片段(隐去敏感信息)和返回的错误信息贴出来,我再帮你针对性分析。
内容的提问来源于stack exchange,提问作者Infinity

