我一直在使用Socilte包登录用户,我使用的是facebook,google,twiter和github API。所有其他API工作正常,期待谷歌API,它从谷歌返回时显示错误。
HTTP错误403 - 禁止
Web服务器配置为不列出此目录的内容,或者您没有足够的权限来访问该资源。
这是我的回调函数,实际上它没有达到这个回调函数:
public function handleGoogleCallback()
{
$user = Socialite::driver('google')->stateless()->user();
}
收到此错误的原因是因为未启用Google+ API,请转到Google控制台帐户并启用Google+ API。
从这里打开您的Google控制台帐户:console.developers.google.com
然后转到 - >库 - >选择Google+ API - >启用
注意:如果这不起作用,请更改托管服务器并尝试
几天前我遇到了同样的问题。即使谷歌搜索它也没有解决我的问题。所以我决定深入了解并猜测是什么,我找到了这个问题的恰当原因。
在我的情况下,原因是谷歌回调网址中的.profile一词。
'https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile'(我的回调网址的一部分)
我与我的托管服务提供商(Hostgator)就这一点进行了对话,最初他们说这个问题出现在代码中并不在他们身边。但是我有足够的证据(我确实通过将.profile改为.abc和huaa ......问题显示出来......)向他们展示这个问题来自服务器端。然后他们正在推销我的VPS主机(我有共享托管),但我拒绝接受它然后最后他们接受他们有一个mod_security规则,防止单词.profile出于安全原因。
他们当然有一个奇怪的模块安全规则。
当我得到它他们不会为我改变mod_security规则然后我改变了社交网络核心包
核心/供应商/ laravel /社会名流/ src目录/双/ GoogleProvider.php
并评论了这里的个人资料
protected $scopes = [
'openid',
//'profile',
'email',
];
一切都很好,除了我不能得到用户名,因为评论的配置文件,但对我来说,这是很好的去。所以这可能是摆脱糟糕的服务器规则的一个技巧。