LinkedIn OAuth 2.0客户端认证失败问题求助
Hey,我之前对接LinkedIn OAuth的时候也踩过这个invalid_client的坑,本质就是LinkedIn认不出你的客户端身份,大概率是这几个地方出问题了,咱们一个个排查:
常见排查方向
1. 漏传或写错客户端凭证
- 首先,用授权码换令牌的请求必须同时传
client_id和client_secret!你提供的请求URL明显截断了(最后到&gra就没了),大概率是漏传了client_secret参数——这个是LinkedIn验证你身份的核心凭证之一,绝对不能少。 - 另外要确认
client_id是不是完全复制对了:去LinkedIn开发者后台里找你的应用,核对Client ID有没有多空格、少字符,别把Client Secret当成client_id填进去了。
2. 请求方式用错了
LinkedIn明确要求:授权码换令牌必须用POST请求,而不是把参数拼在URL里的GET请求!你现在的写法是GET请求,这直接会导致验证失败。正确的做法是把所有参数(grant_type=authorization_code、client_id、client_secret、code、redirect_uri)放在POST请求体里,用application/x-www-form-urlencoded格式提交。
举个curl的正确示例:
curl -X POST 'https://www.linkedin.com/oauth/v2/accessToken' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'grant_type=authorization_code&client_id=你的ClientID&client_secret=你的ClientSecret&code=你拿到的授权码&redirect_uri=http%3A%2F%2F127.0.0.1%3A8000%2FLinkedin%2Fsignin-linkedin%2F'
3. Redirect URI完全不匹配
你传的redirect_uri必须和LinkedIn开发者后台里应用授权设置中填写的地址完全一致——包括大小写、末尾的斜杠、端口号都不能差。比如后台里填的是http://127.0.0.1:8000/Linkedin/signin-linkedin(没有末尾斜杠),你传的带斜杠就会触发验证失败。
4. URL编码是否正确
虽然你已经对redirect_uri做了编码,但要确认是用标准的URL编码方式处理的,别手动转义出错。建议直接用你编程语言自带的URL编码工具(比如Python的urllib.parse.quote)来处理这个参数。
先把这几个点排查一遍,尤其是POST请求和client_secret的问题,应该就能解决这个错误了。
内容的提问来源于stack exchange,提问作者rSim
相关产品推荐
相关产品推荐

