我一直在使用Socilte软件包进行用户登录,即使用 facebook , google , twiter 和 github API。所有其他API都可以正常使用, google API期望,从Google返回时显示错误。
HTTP错误403-禁止
Web服务器被配置为不列出此目录的内容,或者您没有足够的权限来访问资源。
这是我的回调函数,实际上它没有达到此回调函数:
public function handleGoogleCallback()
{
$user = Socialite::driver('google')->stateless()->user();
}
答案 0 :(得分:1)
出现此错误的原因是未启用Google+ API,请在Google控制台帐户上启用Google+ API。
从此处打开您的Google控制台帐户:console.developers.google.com
然后转到->库->选择Google+ API-> 启用
注意: 如果这不起作用,请更改托管服务器并尝试
答案 1 :(得分:1)
几天前,我面临着同样的问题。甚至谷歌搜索都不能解决我的问题。 因此,我决定深入研究它,并猜测是什么,我找到了此问题的适当原因。
就我而言,原因是Google回调URL中的 .profile 一词。
“ https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile”(我的回调网址的一部分)
我与托管服务提供商(Hostgator)对此进行了交谈,最初,他们说此问题不在代码中,而是在他们的身边。但是我有足够的证据(我确实通过将.profile更改为.abc和huaa ...向他们展示了问题。.)向他们展示了此问题来自服务器端。然后他们向我推销VPS托管(我已经共享了托管),但我拒绝接受,然后最终他们接受了他们有一个mod_security规则,该规则阻止了.profile一词出于安全原因。
他们当然有一个奇怪的mod_security规则。
当我得知他们不会为我更改mod_security规则时,我更改了 socialite核心软件包
core / vendor / laravel / socialite / src / Two / GoogleProvider.php
并在此处评论了个人资料
protected $scopes = [
'openid',
//'profile',
'email',
];
那一切都很好,除了我因为评论个人资料而无法获得用户名,但对我来说很好。因此,这可能是摆脱不良服务器规则的技巧。