点微信登录直接跳到错误页,地址栏里带着 errcode=10003,页面提示 redirect_uri 参数错误。后台填的回调地址结尾有斜杠,代码里拼的是不带斜杠的版本。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
add_action('init', function () {
error_log(home_url('/?auth=callback'));
});
// 与开放平台后台填的地址逐字符比对
OAuth 服务商对 redirect_uri 做的是字符串全等比对,多一个斜杠、换一个大小写都算不同地址,不会做归一化。前端用 home_url 拼地址,配置里是手写的路径,两边从来没对齐过。这一点先确认清楚,后面就不用反复试。
碰到「redirect_uri 结尾斜杠」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。
具体做法是,把配置页里的回调和代码里生成的那串分别打印出来,逐字符比;以服务商后台为准,代码里用同一个常量拼,别在两处各写一份;本地和线上域名分开配,别用同一个回调地址凑合;改完清一次浏览器缓存再点登录,旧的重定向可能还在缓存里。
改完照着核一遍,点登录能正常跳到授权页,回调回来地址栏里 code 只出现一次,不再报 10003。
