首页 php框架 Laravel Laravel开发:如何使用Laravel Socialite和Google实现第三方登录?

Laravel开发:如何使用Laravel Socialite和Google实现第三方登录?

Jun 14, 2023 am 09:30 AM
laravel google socialite

Laravel开发:如何使用Laravel Socialite和Google实现第三方登录?

在现代的Web应用程序中,用户的登录和认证是必不可少的。传统的基于用户名和密码的身份验证方式已经无法满足其安全性和便利性的要求。第三方登录解决了这个问题,它允许用户使用他们在其他平台上已经创建的帐户即可登录您的应用程序。

在这篇文章中,我们将介绍如何使用Laravel Socialite和Google实现第三方登录。

什么是Laravel Socialite?

Laravel Socialite是Laravel社区中广泛使用的OAuth认证流程的封装库。它允许我们轻松地与多个第三方服务(例如Facebook,Twitter,Google等)建立连接。

Google开发平台设置

首先,我们需要在Google开发平台中创建OAuth客户端 ID。打开 https://console.developers.google.com/ 并创建一个新项目。在左上角的“Select a Project”下拉菜单中,单击“New Project”。

填写项目名称和其他项目设置信息。创建项目后,您会被重定向到项目的概述页面。从顶部菜单中,选择“API和服务”>“凭据”。

单击“创建凭证”按钮,并选择“OAuth客户端ID”。

在“应用类型”下拉菜单中,选择“Web应用程序”。为了实现Laravel Socialite和Google的集成,我们需要填写“授权 JavaScript来源”和“重定向URI”字段。

在“授权JavaScript来源”字段中,输入您的应用程序的主机名,我们可以本地使用“http://localhost”的URL。在“重定向URI”字段中,输入一个回调URL,用于从Google登录后重定向回您的应用程序。在本例中,我们将使用“http://localhost:8000/auth/google/callback”这个URL。

创建后,您将获得一个客户端ID和一个客户端秘密。保存这些凭据,我们稍后将在Laravel中使用它们。

Laravel Socialite安装和配置

Laravel Socialite是一个Composer包,通过命令行安装即可使用。我们使用以下命令安装它:

composer require laravel/socialite
登录后复制

安装完成后,在Laravel配置文件中增加Socialite服务提供者:

'providers' => [
    // ...
    LaravelSocialiteSocialiteServiceProvider::class,
],
登录后复制

还需添加以下配置信息到Laravel配置文件中:

'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'redirect' => env('GOOGLE_REDIRECT'),
登录后复制

在这里我们使用了.env文件保存需要的配置信息:

GOOGLE_CLIENT_ID=your-client-id
GOOGLE_CLIENT_SECRET=your-client-secret
GOOGLE_REDIRECT=http://localhost:8000/auth/google/callback
登录后复制

Laravel Socialite集成

在这里,我们需要创建一个路由处理程序,它将处理与Google的OAuth流程。

Route::get('/auth/google', function () {
    return Socialite::driver('google')->redirect();
});

Route::get('/auth/google/callback', function () {
    $user = Socialite::driver('google')->user();
    dd($user);
});
登录后复制

第一个路由处理程序将重定向用户到Google登录流程。

在成功后,用户将被重定向到第二个路由处理程序中。 此时,我们可以使用user()方法获取已登录用户的信息。 填写返回的用户代码,打印您获取的用户信息:

$user = Socialite::driver('google')->user();
dd($user);
登录后复制

您会看到其他有关用户的数据,如用户名,电子邮件地址,头像,令牌等。在此信息的基础上,我们可以实现第三方登录了。

在这里,我们将使用上面获取到的用户信息来创建应用程序用户并进行身份验证。

Route::get('/auth/google/callback', function () {
    $user = Socialite::driver('google')->user();
    // save application user
    $authUser = User::where('email', $user->email)->first();
    if ($authUser) {
        Auth::login($authUser, true);
        return redirect('/home');
    }
    // create application user
    $newUser = new User;
    $newUser->name = $user->name;
    $newUser->email = $user->email;
    $newUser->password = bcrypt(str_random(16));
    $newUser->save();
    Auth::login($newUser, true);
    return redirect('/home');
});
登录后复制

在这里,我们首先使用Google返回的电子邮件地址查找现有应用程序用户。如果找到,则使用Laravel的身份验证API进行登录。如果找不到,则创建新用户并使用Laravel的身份验证API进行登录。

结论

这篇文章介绍了如何使用Laravel Socialite和Google实现第三方登录。

通过Google开发平台设置,我们生成了必要的OAuth凭据。 然后,我们使用了Laravel Socialite,用于省去OAuth流程中繁琐的步骤和代码。最后,我们使用用户的现有电子邮件地址进行身份验证并创建新用户。

我们希望这篇文章能够提供有关如何使用Laravel Socialite和Google实现第三方登录的指导,以及涵盖OAuth流程的概述。

以上是Laravel开发:如何使用Laravel Socialite和Google实现第三方登录?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

在Laravel中如何获取邮件发送失败时的退信代码? 在Laravel中如何获取邮件发送失败时的退信代码? Apr 01, 2025 pm 02:45 PM

Laravel邮件发送失败时的退信代码获取方法在使用Laravel开发应用时,经常会遇到需要发送验证码的情况。而在实�...

Laravel计划任务不执行:schedule:run命令后任务未运行怎么办? Laravel计划任务不执行:schedule:run命令后任务未运行怎么办? Mar 31, 2025 pm 11:24 PM

Laravel计划任务运行无响应排查在使用Laravel的计划任务调度时,不少开发者会遇到这样的问题:schedule:run...

在 Laravel 中,如何处理邮件发送验证码失败的情况? 在 Laravel 中,如何处理邮件发送验证码失败的情况? Mar 31, 2025 pm 11:48 PM

Laravel邮件发送验证码失败时的处理方法在使用Laravel...

谁实际拥有Google? 谁实际拥有Google? Apr 02, 2025 pm 04:01 PM

Google由AlphabetInc.拥有,Alphabet由拉里·佩奇和谢尔盖·布林控制:1)通过持有B类股票(每股10票投票权),创始人确保对公司的控制权;2)Alphabet的A类和C类股票分别在公开市场和员工持股计划中流通,但不影响创始人的控制权。

在dcat admin中如何实现点击添加数据的自定义表格功能? 在dcat admin中如何实现点击添加数据的自定义表格功能? Apr 01, 2025 am 07:09 AM

在dcatadmin(laravel-admin)中如何实现自定义点击添加数据的表格功能在使用dcat...

Laravel Redis连接共享:为何select方法会影响其他连接? Laravel Redis连接共享:为何select方法会影响其他连接? Apr 01, 2025 am 07:45 AM

Laravel框架中Redis连接的共享与select方法的影响在使用Laravel框架和Redis时,开发者可能会遇到一个问题:通过配置...

Laravel多租户扩展stancl/tenancy:如何自定义租户数据库连接的主机地址? Laravel多租户扩展stancl/tenancy:如何自定义租户数据库连接的主机地址? Apr 01, 2025 am 09:09 AM

在Laravel多租户扩展包stancl/tenancy中自定义租户数据库连接使用Laravel多租户扩展包stancl/tenancy构建多租户应用时,...

Bangla 部分模型检索中的 Laravel Eloquent ORM) Bangla 部分模型检索中的 Laravel Eloquent ORM) Apr 08, 2025 pm 02:06 PM

LaravelEloquent模型检索:轻松获取数据库数据EloquentORM提供了简洁易懂的方式来操作数据库。本文将详细介绍各种Eloquent模型检索技巧,助您高效地从数据库中获取数据。1.获取所有记录使用all()方法可以获取数据库表中的所有记录:useApp\Models\Post;$posts=Post::all();这将返回一个集合(Collection)。您可以使用foreach循环或其他集合方法访问数据:foreach($postsas$post){echo$post->

See all articles