Django使用social-auth接入LinkedIn注册提示redirect_uri与注册值不匹配
LinkedIn OAuth2 redirect_uri 不匹配问题排查方案
1. 优先核对实际发起请求的redirect_uri值
直接抓取LinkedIn授权跳转链接中的redirect_uri参数值,和你在LinkedIn后台配置的地址逐字符比对,重点确认以下差异点:
- 协议是否完全一致:
http和https属于不同地址 - 域名是否完全一致:带
www和不带www属于不同地址 - 路径是否完全一致:末尾带斜杠和不带斜杠属于不同地址
- 端口是否一致:本地测试时的端口号必须和配置值完全匹配
2. 修正Django social-auth 配置问题
- 显式指定重定向地址,避免自动生成出错,在
settings.py中添加:
SOCIAL_AUTH_LINKEDIN_OAUTH2_REDIRECT_URI = "https://www.example.com/complete/linkedin-oauth2/"
- 如果你用了Nginx、CDN等反向代理服务,需要添加以下配置让Django正确识别原始请求的协议和域名:
USE_X_FORWARDED_HOST = True SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
否则Django会默认生成http协议的重定向地址,和你配置的https地址不匹配。
3. 确认LinkedIn后台配置规则
- 重定向地址必须填写在「OAuth 2.0 settings」板块的「Redirect URLs」列表中,不要填到其他域名配置项里
- LinkedIn不支持通配符格式的重定向地址,必须填写完整的精确地址
- 配置修改后最多需要等待5分钟生效,刚修改完立刻测试可能还会报错
4. 本地测试特殊处理
LinkedIn不支持localhost作为重定向域名,你可以修改本地hosts文件,添加一条映射127.0.0.1 test.example.com,然后在LinkedIn后台配置对应本地地址,用自定义域名访问测试即可。
内容的提问来源于stack exchange,提问作者boyenec
相关产品推荐
相关产品推荐

