LinkedIn API接入报错invalid_redirect_uri,请求协助排查
我按照LinkedIn官方授权码流程操作,无法获取Authorization Code,调用获取access_token的POST请求时返回错误:
{
"error": "invalid_redirect_uri",
"error_description": "Unable to retrieve access token: appid/redirect uri/code verifier does not match authorization code. Or authorization code expired. Or external member binding exists"
}
错误截图:
我使用的redirect_uri为https://airbyte.io,获取授权码的GET请求如下:
https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id=78oy2gu644mxz2&redirect_uri=https%3A%2F%2Fairbyte.io&scope=r_ads,r_ads_reporting,r_organization_social
已尝试的排查步骤:
- 核对client_id和client_secret
- 对GET请求中的URI进行编码
- 在POST请求的redirect_url中添加scope参数
- 在授权码生成20秒内使用其发起请求
但问题仍未解决,请求帮助。
针对性排查建议
检查LinkedIn应用后台的重定向URI配置
必须确保LinkedIn开发者后台里,你的应用所配置的重定向URI和你请求中使用的https://airbyte.io完全一致,包括大小写、末尾是否带斜杠这类细节——LinkedIn对URI匹配的要求非常严格,哪怕差一个字符都会报错。确认POST请求中的redirect_uri参数
获取access_token的POST请求里,必须传入和获取授权码时完全相同的redirect_uri(注意是redirect_uri不是redirect_url,别写错参数名),而且不需要编码,直接传原始的https://airbyte.io即可。检查PKCE验证的code_verifier
如果你的流程用了PKCE(LinkedIn当前推荐使用),要确保获取授权码时生成的code_challenge和POST请求里的code_verifier完全对应:code_challenge是code_verifier经过SHA256哈希再Base64URL编码后的结果,任何一步出错都会导致验证失败。排查应用权限与账号绑定
错误描述里提到的“external member binding exists”,可能是你的LinkedIn账号已经绑定了其他第三方应用,或者当前账号没有权限访问你请求的r_ads等广告类权限——可以换一个没有绑定过其他相关应用的LinkedIn账号测试,或者确认账号是否有对应广告管理权限。检查请求参数的格式
POST请求的参数要确保是application/x-www-form-urlencoded格式,而不是JSON格式,LinkedIn的token接口只接受表单编码的参数。
内容的提问来源于stack exchange,提问作者Daniel Chepenko

