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

在当今互联网时代,用户的登录已经成为了绝大部分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 模板文件,添加以下代码:

<a href="%7B%7B%20url('auth/github')%20%7D%7D" class="btn btn-github"><i class="fa fa-github"></i> Github 登录</a>

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

步骤6:定义Github回调函数

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

Route::get('auth/github/callback', function () {     $user = Socialite::driver('github')-&gt;user();      // 如果在本地没有找到该用户,则创建新用户     $existingUser = User::where('email', $user-&gt;getEmail())-&gt;first();     if ($existingUser) {         auth()-&gt;login($existingUser, true);     } else {         $newUser                  = new User;         $newUser-&gt;name            = $user-&gt;getNickname();         $newUser-&gt;email           = $user-&gt;getEmail();         $newUser-&gt;github_id       = $user-&gt;getId();         $newUser-&gt;avatar          = $user-&gt;getAvatar();         $newUser-&gt;provider        = 'github';         $newUser-&gt;save();         auth()-&gt;login($newUser, true);     }      return redirect()-&gt;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-here 和 your-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 则可以利用现有的优秀的认证服务提供商来简化身份验证方案的实现。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享