Laravel开发:如何使用Laravel Socialite实现Github登录?

发布时间 - 2023-06-13 00:00:00    点击率:

在当今互联网时代,用户的登录已经成为了绝大部分web应用必须要考虑的事情。这也意味着web应用需要为用户提供可选择的多重登录方式,来降低用户的登录困难度和优化用户体验。

作为当前最受欢迎的PHP框架之一,Laravel提供了一些非常方便的方式来实现用户的身份验证,其中Laravel Socialite是一个非常强大的用户身份验证解决方案,它允许应用使用第三方平台作为身份验证提供者。

在本文中,我们将介绍如何使用Laravel Socialite来实现Github登录的功能。下面我们来逐步实现这个目标。

步骤1:创建Github应用

在开始本文之前,首先需要注册和创建一个Github账号,并且在Github中创建一个OAuth应用程序。创建应用的过程相对简单,只需遵循以下几个步骤:

  1. 登陆Github账号,在 Github Settings -> Developer settings -> OAuth Apps页面中创建新的OAuth App
  2. 在第一部分填写App名称、Homepage URL和Callback URL

    Callback URL 即登陆成功后返回的Website地址,需要在Laravel网站后台定义

  3. 提交表单后返回的页面中会显示Github应用程序的client_id和client_secret。client_id 将用于配置Laravel Socialite的Github驱动程序。

步骤2:安装 Laravel Socialite

安装 Laravel Socialite 可以通过Composer轻松完成。只需在项目目录下的命令行中输入以下指令即可:

composer require laravel/socialite

步骤3:配置服务提供者和 Facade 引用

打开 config/app.php 配置文件,找到 providers 数组和 aliases 数组,将 Socialite 服务提供者和 Facade 引用添加到对应的数组中。

'providers' => [
    // Other service providers...

    LaravelSocialiteSocialiteServiceProvider::class,
],

'aliases' => [
    // Other aliases...

    'Socialite' => LaravelSocialiteFacadesSocialite::class,
],

步骤4:定义Github驱动配置

在 config/services.php 配置文件中添加以下配置:

'github' => [
    'client_id' => env('GITHUB_CLIENT_ID'),
    'client_secret' => env('GITHUB_CLIENT_SECRET'),
    'redirect' => env('GITHUB_REDIRECT'),
],

步骤5:定义Github登录链接

打开登录页面的 blade 模板文件,添加以下代码:

 Github 登录

这将创建一个链接,通过访问 /auth/github,将会跳转到Github的登录页面。

步骤6:定义Github回调函数

打开我们在Github中注册时的 Callback URL 页面并获取链接中的code参数,并在Laravel路由中添加以下代码:

Route::get('auth/github/callback', function () {
    $user = Socialite::driver('github')->user();

    // 如果在本地没有找到该用户,则创建新用户
    $existingUser = User::where('email', $user->getEmail())->first();
    if ($existingUser) {
        auth()->login($existingUser, true);
    } else {
        $newUser                  = new User;
        $newUser->name            = $user->getNickname();
        $newUser->email           = $user->getEmail();
        $newUser->github_id       = $user->getId();
        $newUser->avatar          = $user->getAvatar();
        $newUser->provider        = 'github';
        $newUser->save();
        auth()->login($newUser, true);
    }

    return redirect()->to('/home');
});

这里需要注意的是,我们需要将github_id保存在数据库中以便需要时进行登录验证,同时也保存了用户昵称和头像方便展示。

步骤7:创建.env文件

打开项目根目录下的 .env 文件,添加以下 Github 相关配置:

GITHUB_CLIENT_ID=your-github-client-id-here
GITHUB_CLIENT_SECRET=your-github-client-secret-here
GITHUB_REDIRECT=http://localhost:8000/auth/github/callback

上述配置中,你需要将 your-github-client-id-hereyour-github-client-secret-here 替换为你自己在Github获取到的client_id和client_secret。GITHUB_REDIRECT的值应该是Github上注册应用程序时的重定向URI参数。

好了,现在你可以尝试用 Github 登录来测试你的应用程序了。当你访问 /auth/github 时,你应该被重定向到 Github 的登录页面。输入你的 Github 账号后,你应该会被重定向回到你通过 Callback URI 指定的地址。

使用 Laravel Socialite 确实是实现身份验证的一种快速、简便的方法,它还支持其他很多账号认证服务提供商,如Facebook、Twitter、Google等等。舒适且高效的第三方登录方式能够极大地提升用户的体验,为Web应用添加多重登录方式也逐渐成为了一种必要。相比起自己独立实现一套认证系统,使用 Laravel Socialite 则可以利用现有的优秀的认证服务提供商来简化身份验证方案的实现。


# github  # laravel  # 身份验证  # 应用程序  # 创建一个  # 只需  # 重定向  # 你应该  # 第三方  # 来实现  # 配置文件  # 的是 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  香港服务器租用费用高吗?如何避免常见误区?  Laravel如何实现API版本控制_Laravel版本化API设计方案  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  🚀拖拽式CMS建站能否实现高效与个性化并存?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  制作企业网站建设方案,怎样建设一个公司网站?  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  如何快速重置建站主机并恢复默认配置?  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  Laravel如何使用.env文件管理环境变量?(最佳实践)  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  Laravel怎么实现验证码(Captcha)功能  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  JS经典正则表达式笔试题汇总  如何解决hover在ie6中的兼容性问题  如何快速搭建高效香港服务器网站?  如何在Windows环境下新建FTP站点并设置权限?  如何在景安服务器上快速搭建个人网站?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何撰写建站申请书?关键要点有哪些?  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  如何基于PHP生成高效IDC网络公司建站源码?  如何生成腾讯云建站专用兑换码?  Bootstrap CSS布局之列表  如何快速生成专业多端适配建站电话?  Java垃圾回收器的方法和原理总结  Python并发异常传播_错误处理解析【教程】  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  如何在橙子建站中快速调整背景颜色?  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  如何基于云服务器快速搭建网站及云盘系统?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  如何在IIS7中新建站点?详细步骤解析  如何在自有机房高效搭建专业网站?  Swift中循环语句中的转移语句 break 和 continue  如何在阿里云虚拟主机上快速搭建个人网站?  PHP 500报错的快速解决方法  如何快速搭建虚拟主机网站?新手必看指南  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  Python文件流缓冲机制_IO性能解析【教程】  Laravel如何创建自定义中间件?(Middleware代码示例)  网站制作价目表怎么做,珍爱网婚介费用多少?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  如何在阿里云服务器自主搭建网站?  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】