google API 的社交名流 Laravel 身份验证错误

Ati*_*ngh 5 google-api laravel laravel-socialite

我一直在使用 Socilte 包进行用户登录,我使用facebookgoogletwitergithub API。除了谷歌API 之外,所有其他 API 都运行良好,从谷歌返回时显示错误。

HTTP 错误 403 - 禁止

Web 服务器被配置为不列出此目录的内容,或者您​​没有足够的权限访问该资源。

这是我的回调函数,实际上它没有到达这个回调函数:

public function handleGoogleCallback()
{
     $user = Socialite::driver('google')->stateless()->user();        
}
Run Code Online (Sandbox Code Playgroud)

Avn*_*lok 5

几天前我遇到了同样的问题。即使谷歌搜索它也没有解决我的问题。所以我决定深入研究并猜测是什么,我找到了这个问题的适当原因。

就我而言,原因是谷歌回调 URL 中的.profile一词。

'https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile'(我的回调网址的一部分)

我与我的托管服务提供商(Hostgator)就此进行了对话,最初他们说这个问题出在代码中,而不是在他们身边。但是我有足够的证据(我确实通过将 .profile 更改为 .abc 和 huaa 向他们展示了......问题消失了......)向他们表明这个问题来自服务器端。然后他们向我推销 VPS 托管(我有共享托管),但我拒绝接受它,然后最终他们接受了他们有一个 mod_security 规则阻止 .profile 一词出于安全原因。

他们当然有一个奇怪的 mod_security 规则。

当我得知他们不会为我更改 mod_security 规则时,我更改了社交名流核心包

核心/供应商/laravel/socialite/src/Two/GoogleProvider.php

并在此处评论个人资料

protected $scopes = [
    'openid',
    //'profile',
    'email',
];
Run Code Online (Sandbox Code Playgroud)

然后一切都很好,除了我因为评论个人资料而无法获得用户名,但对我来说很高兴去。因此,这可能是摆脱不良服务器规则的技巧。


Udh*_*iya 1

出现此错误的原因是因为 Google+ API 未启用,请进入 google console 帐户并启用 Google+ API。

从这里打开您的 Google Console 帐户:console.developers.google.com

然后转到 -> 库 -> 选择 Google+ API ->启用


注意: 如果这不起作用,请更改托管服务器并尝试