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

2023年 8月 5日 27.3k 0

在现代 Web 应用程序中,允许用户使用他们的社交媒体帐户快速、方便的登录到您的网站已成为一种趋势。虽然可以实现自己的身份验证系统,但使用第三方身份验证系统可以使您的应用程序更加灵活和易于使用。

在本篇文章中,我们将探讨如何使用 Laravel Socialite 和 Github 实现第三方登录。Laravel Socialite 是一个 Laravel 扩展包,可以轻松地将社交媒体身份验证集成到您的 Laravel 应用程序中。Github 是一个流行的 Git 存储库托管服务,它也提供了第三方身份验证服务。

在开始之前,请确保您已经安装了 Laravel 和 Composer。

  • 安装 Laravel Socialite
  • 首先,我们需要安装 Laravel Socialite。在终端中运行以下命令:

    composer require laravel/socialite

    登录后复制

    此命令将下载并安装 Laravel Socialite 插件。

  • 创建 Github App
  • 在使用 Github 登录之前,我们需要先创建一个 Github App,以便我们能够使用 Github 的第三方身份验证服务。

    访问此链接,并登录您的 Github 帐户:https://github.com/settings/developers

    然后,单击“New OAuth App”按钮并填写表单。在“Homepage URL”中输入您的主页 URL,在“Authorization callback URL”中输入回调 URL。此步骤的目的是将您的应用程序与 Github 进行连接。

  • 配置 Laravel Socialite
  • 接下来,我们需要配置 Laravel Socialite,以便它可以与我们刚刚创建的 Github App 进行通信。

    3.1 添加 Github 驱动程序

    打开 config/services.php 文件并添加以下配置:

    'github' => [
    'client_id' => env('GITHUB_CLIENT_ID'),
    'client_secret' => env('GITHUB_CLIENT_SECRET'),
    'redirect' => 'http://your-domain.com/auth/github/callback',
    ],

    登录后复制

    这将创建一个名为“github”的驱动程序,并配置客户端 ID、客户端密钥和回调 URL。请替换“your-domain.com”为您的主页 URL。

    3.2 更新 .env 文件

    打开 .env 文件并添加以下配置:

    GITHUB_CLIENT_ID=your-client-id
    GITHUB_CLIENT_SECRET=your-client-secret
    GITHUB_REDIRECT_URI=http://your-domain.com/auth/github/callback

    登录后复制

    请替换 your-client-idyour-client-secretyour-domain.com 为您的 Github App 的客户端 ID、客户端密钥和主页 URL。

  • 创建 Github 登录路由和控制器
  • 现在,我们可以开始实现我们的 Github 登录了。首先,我们需要创建一个 Github 登录路由:

    Route::get('auth/github', '[GithubController@login');
    Route::get('auth/github/callback', '[GithubController@callback']);

    登录后复制

    然后,我们需要创建 GithubController 控制器类,并在其中实现 logincallback 方法:

    namespace AppHttpControllers;

    use IlluminateHttpRequest;
    use LaravelSocialiteFacadesSocialite;

    class GithubController extends Controller
    {
    public function login()
    {
    return Socialite::driver('github')->redirect();
    }

    public function callback(Request $request)
    {
    $user = Socialite::driver('github')->user();

    // do something with user data
    }
    }

    登录后复制

    login 方法中,我们使用 Socialite facade 调用 driver 方法指定使用 Github 驱动程序,并使用 redirect 方法生成一个跳转到 Github 登录页面的 URL。

    callback 方法中,我们先使用 Socialite facade 调用 driver 方法获取 Github 用户信息,然后可以进行一些逻辑处理。例如,如果该用户是首次登录,可以将用户添加到用户表中,或者将其与已有用户进行关联。

    5.测试 Github 登录

    现在,我们已经完成了所有的配置和代码,可以测试我们的 Github 登录是否正常工作了。

    在浏览器中输入该地址:http://your-domain.com/auth/github。这将转到 Github 登录页面。在页面上输入您的 Github 帐户信息,然后单击“登录”。如果一切正常,您将被重定向到我们在第 3 步中配置的回调 URL。

    callback 方法的末尾添加以下代码:

    return view('welcome');

    登录后复制

    这将使用户在登录成功后重定向到我们的欢迎页面。

    现在,您可以测试您的应用程序是否可以根据 Github 用户认证登录了。

    结论

    在本篇文章中,我们介绍了如何使用 Laravel Socialite 和 Github 实现第三方身份验证。考虑到现在的用户喜欢快速注册和登录,这种方式可以让您的应用程序更加用户友好,也可以使您的应用程序更加灵活。

    以上就是Laravel开发:如何使用Laravel Socialite和Github实现第三方登录?的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论