Ati*_*ngh 5 google-api laravel laravel-socialite
我一直在使用 Socilte 包进行用户登录,我使用facebook、google、twiter和github API。除了谷歌API 之外,所有其他 API 都运行良好,从谷歌返回时显示错误。
HTTP 错误 403 - 禁止
Web 服务器被配置为不列出此目录的内容,或者您没有足够的权限访问该资源。
这是我的回调函数,实际上它没有到达这个回调函数:
public function handleGoogleCallback()
{
$user = Socialite::driver('google')->stateless()->user();
}
Run Code Online (Sandbox Code Playgroud)
几天前我遇到了同样的问题。即使谷歌搜索它也没有解决我的问题。所以我决定深入研究并猜测是什么,我找到了这个问题的适当原因。
就我而言,原因是谷歌回调 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)
然后一切都很好,除了我因为评论个人资料而无法获得用户名,但对我来说很高兴去。因此,这可能是摆脱不良服务器规则的技巧。
出现此错误的原因是因为 Google+ API 未启用,请进入 google console 帐户并启用 Google+ API。
从这里打开您的 Google Console 帐户:console.developers.google.com
然后转到 -> 库 -> 选择 Google+ API ->启用
注意: 如果这不起作用,请更改托管服务器并尝试
归档时间: |
|
查看次数: |
2799 次 |
最近记录: |