CodeIgniter集成LinkedIn登录跳转遇错误页面,求排查问题
解决CodeIgniter集成LinkedIn登录的授权错误问题
我帮你排查了一下,你遇到的LinkedIn授权页面错误,核心问题出在授权链接的参数格式错误,具体来说有这几个关键点需要修正:
1. 移除参数值的多余单引号
你当前的授权链接里,client_id和redirect_uri的值被额外的单引号包裹了(比如client_id='<?php echo ... ?>'),这会导致LinkedIn接收到的参数值是带单引号的字符串,和你在开发者平台配置的Client_ID、回调地址完全不匹配,直接触发验证失败。
修复后的授权链接代码
把原来的链接代码改成这样,去掉参数值的单引号,同时给回调地址加上URL编码处理:
<a class="btn btn-linkedin" href="https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id=<?php echo $this->config->item('Client_ID'); ?>&redirect_uri=<?php echo urlencode($this->config->item('callback_url')); ?>&state=98765EeFWf45A53sdfKef4233&scope=r_basicprofile r_emailaddress"> <img src="./images/linkedin_connect_button.png" alt="Sign in with LinkedIn"/> </a>
添加urlencode()是为了确保回调地址中的特殊字符(比如斜杠、域名特殊标识)被正确编码,避免URL解析时出现异常。
2. 验证回调地址的精确匹配
LinkedIn对回调地址的校验非常严格,你需要确保:
- 开发者平台中配置的
redirect_uri和代码中使用的完全一致(包括协议http/https、完整域名、路径,不能有多余的斜杠或空格) - 如果你的站点是HTTPS协议,回调地址必须同步使用HTTPS,不能混用HTTP
3. 检查应用状态与权限范围
- 如果你的LinkedIn应用处于沙盒模式,需要先在开发者平台的「测试」选项卡中添加测试用户,否则普通用户无法完成授权流程
- 注意
scope参数中的权限是否为LinkedIn当前支持的:r_basicprofile和r_emailaddress是旧版API权限,若使用新版LinkedIn API,可能需要改用profile、email这类权限(建议参考LinkedIn官方最新文档确认)
4. 快速调试建议
你可以先手动打印生成的授权URL,直观检查参数是否正确:
echo "https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id=".$this->config->item('Client_ID')."&redirect_uri=".urlencode($this->config->item('callback_url'))."&state=98765EeFWf45A53sdfKef4233&scope=r_basicprofile r_emailaddress";
把输出的URL复制到浏览器中访问,若仍报错,LinkedIn会给出具体错误提示(比如“invalid client_id”“redirect_uri mismatch”),可以根据提示进一步定位问题。
内容的提问来源于stack exchange,提问作者dev_02
相关产品推荐
相关产品推荐

