首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何禁用口香糖ssl验证laravel

如何禁用口香糖ssl验证laravel
EN

Stack Overflow用户
提问于 2021-07-29 10:32:07
回答 1查看 951关注 0票数 1

我想用gmail登录,我创建了laravel认证,我用google添加了按钮登录,我安装了laravel软件包,我通过命令编写器需要laravel/ socialite,我在config/services中添加了配置:

代码语言:javascript
复制
'google' => [
    'client_id' => env('GOOGLE_CLIENT_ID'),
    'client_secret' => env('GOOGLE_CLIENT_SECRET'),
    'redirect' => 'http://localhost:8000/laravel-socialite/public/login/google/callback',
    ],

我在routes/web.php中添加了路由:

代码语言:javascript
复制
Route::get ('login/google',[App\Http\Controllers\Auth\LoginController::class, 'redirectToGoogle'])->name('login.google');
Route::get('login/google/callback',[App\Http\Controllers\Auth\LoginController::class,'handleGoogleCallback']);

我输入了按钮“用谷歌登录”网址:

代码语言:javascript
复制
<a href="{{ route('login.google') }}" class="btn btn-danger btn-block">login with Google</a>

我在.env文件中添加了id和变量键:

代码语言:javascript
复制
GOOGLE_CLIENT_ID="759714452408-gcbbdff9d7tp6215vgla9qhvrf60juh8.apps.googleusercontent.com"
GOOGLE_CLIENT_SECRET="ZKgJSqgibBNcHzD9vAMB80cw"

我在_registerOrLoginUser中创建了loginController函数:

代码语言:javascript
复制
protected function _registerOrLoginUser ($ data)
    {
        $ user = User :: where ('email', '=', $ data-> email) -> first ();
        if (! $ user) {
            $ user = new User ();
            $ user-> name = $ data-> name;
            $ user-> email = $ data-> email;
            $ user-> provider_id = $ data-> provider_id;
            $ user-> avatar = $ data-> avatar;
            $ user-> save ();
        }
        Auth :: login ($ user);
    }

我在LoginController.php中添加了这两个函数,并调用_registerOrLoginUser函数并将其重定向到"home“。

代码语言:javascript
复制
public function redirectToGoogle () {
            return Socialite :: driver ('google') -> redirect ();
        }
        public function handleGoogleCallback () {
            $ user = Socialite :: driver ('google') -> user ();
            $ this -> _ registerOrLoginUser ($ user);
            return redirect () -> route ('home');
        }

我创建了google应用程序来获取id和sercret。

数据库/表用户迁移:

代码语言:javascript
复制
public function up ()
    {
        Schema :: create ('users', function (Blueprint $ table) {
            $ table-> id ();
            $ table-> string ('name');
            $ table-> string ('email');
            $ table-> timestamp ('email_verified_at') -> nullable ();
            $ table-> string ('password');
            $ table-> string ('provider_id') -> nullable ();
            $ table-> string ('avatar') -> nullable ();
            $ table-> rememberToken ();
            $ table-> timestamps ();
        });
    }

最后,当我单击"login with google"按钮时,它会打开gmail并选择我的帐户,它会给我带来错误:cURL error 77: error setting certificate verify locations。甚至我已经下载了cacert.pem文件并将其复制到根D:\wamp\bin\php \php7.3.5\extras\ssl,并修改了php.ini

我发现解决方案是禁用guzzle,因此添加以下代码:

代码语言:javascript
复制
$user->get('/url', ['verify' => false]);

但我不知道在哪里。

EN

回答 1

Stack Overflow用户

发布于 2022-05-30 10:19:26

为了回答您的问题,您的本地开发环境没有提供SSL证书。根据您的设置,您可以配置它,但是在开发期间简单地忽略它确实更容易,正如您所建议的那样。你离解决方案很近。下面是如何配置它的方法。我只是应用它,如果网站没有服务在一个生产环境。

代码语言:javascript
复制
public function handleGoogleCallback () {
    if (app()->environment('local')) {
        $user = Socialite::driver('google')
            ->setHttpClient(new \GuzzleHttp\Client(['verify' => false]))
            ->user();
    } else {
        $user = Socialite::driver('google')->user();
    }
    $this->_registerOrLoginUser($user);
    
    return redirect()->route('home');
}

此外,在定义重定向URL时,可以将其指定为相对URL,这样它就不会硬编码本地URL结构。

代码语言:javascript
复制
'google' => [
    'client_id' => env('GOOGLE_CLIENT_ID'),
    'client_secret' => env('GOOGLE_CLIENT_SECRET'),
    'redirect' => '/laravel/socialite/public/login/google/callback',
],

在Google控制台中,您可以编辑OAuth凭据并列出任意数量的允许重定向URL。只需添加一个域名,您将服务您的网站将从。由于重定向是在浏览器中本地发生的,所以添加代理域或localhost可以正常工作。只要您的本地系统被配置为解析地址,它就会在OAuth流中返回给浏览器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68574324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档