Laravel使用Socialite实现Facebook登录报重定向URI未白名单错误求解
- 清除Laravel配置缓存
配置修改后如果没有清理缓存,项目会仍然读取旧的配置值。执行以下命令清理并重新生成配置缓存:php artisan config:clear # 生产环境清理后可执行缓存命令 php artisan config:cache - 排查HTTPS识别问题
如果站点配置了SSL但使用了反向代理(如Nginx、Cloudflare),Laravel可能会错误识别请求协议为HTTP,导致生成的回调地址为HTTP开头,和后台配置的HTTPS地址不匹配。可在app/Providers/AppServiceProvider.php的boot方法中添加代码强制使用HTTPS生成链接:public function boot() { \URL::forceScheme('https'); } - 严格匹配URI规则
Facebook OAuth对重定向URI的匹配为严格模式,需确保以下内容完全一致:- 地址大小写完全相同(如路径中的
auth不要写成Auth) - 末尾不要多余斜杠(如不要写成
https://xxx.in/auth/facebook/callback/) - 域名前缀一致(如后台配置不带
www则实际回调地址也不能带www,两种场景都用到的话需把两个地址都填入Facebook后台白名单)
- 地址大小写完全相同(如路径中的
- 打印实际回调地址排查
在跳转Facebook登录的逻辑前,输出实际生成的重定向地址,直接核对其中redirect_uri参数的值是否和后台配置完全一致:dd(Socialite::driver('facebook')->redirect()->getTargetUrl()); - 核对Facebook应用配置
确认填写白名单的Facebook应用和你代码中用的client_id对应同一个应用,应用如果处于开发模式,需确保测试账号在应用的测试用户列表内。
内容的提问来源于stack exchange,提问作者user3653474
相关产品推荐
相关产品推荐

