Laravel5.4框架使用socialite实现github登录的方法

yizhihongxing

Laravel使用Socialite实现Github登录

1. 安装Socialite

在 Laravel 项目根目录下,使用 Composer 安装 Socialite。

composer require laravel/socialite

安装成功后,在config/app.php 中配置 Socialite 的 Service Provider 和 Facade:

...
'providers' => [
    // Other Service Providers

    Laravel\Socialite\SocialiteServiceProvider::class,
],

'aliases' => [
    // Other Facades

    'Socialite' => Laravel\Socialite\Facades\Socialite::class,
],
...

2. 配置services.php

config/目录下,创建services.php文件,用于配置Github OAuth:

<?php

return [
    'github' => [
        'client_id' => env('GITHUB_CLIENT_ID'),
        'client_secret' => env('GITHUB_CLIENT_SECRET'),
        'redirect' => env('GITHUB_CALLBACK_URL'),
    ],
];

3. 获取Github OAuth应用 Client ID 和 Client Secret

  • 打开 https://github.com/settings/developers ,登录账号
  • 点击右上角的“New OAuth App”
  • 填写应用信息,其中 Authorization callback URL 填写指向 Laravel 应用的路由
  • 点击“Register application”,完成后即可看到 Client ID 和 Client Secret。

4. 在env中设置Github OAuth环境变量

打开.env文件,加入如下环境变量:

GITHUB_CLIENT_ID=你的Client ID
GITHUB_CLIENT_SECRET=你的Client Secret
GITHUB_CALLBACK_URL=http://your-app.com/auth/github/callback

其中,GITHUB_CALLBACK_URL为 Github OAuth 应用的回调地址,需要自己在 Laravel 应用中定义一个路由。

5. 创建Github OAuth路由及控制器方法

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Socialite;

class GithubController extends Controller
{
    /**
     * Redirect the user to the GitHub authentication page.
     *
     * @return \Illuminate\Http\Response
     */
    public function redirectToProvider()
    {
        return Socialite::driver('github')->redirect();
    }

    /**
     * Obtain the user information from GitHub.
     *
     * @return \Illuminate\Http\Response
     */
    public function handleProviderCallback(Request $request)
    {
        //$user = Socialite::driver('github')->user();
        $user = Socialite::driver('github')->stateless()->user();
        // 用户信息存储、或者其他操作

        return redirect('/home');
    }
}

routes/web.php文件中,定义 Github OAuth 路由:

Route::get('auth/github', 'Auth\GithubController@redirectToProvider');
Route::get('auth/github/callback', 'Auth\GithubController@handleProviderCallback');

6. 完成Github OAuth登录

现在可以通过以下方式访问 Github OAuth 登录界面:

http://laravel.app/auth/github

在 Github 登录后,会跳转至 Laravel 应用中定义的回调路由,执行handleProviderCallback方法。在该方法中,可以根据$user对象获取用户信息并进行相应的操作(如存储信息等)。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Laravel5.4框架使用socialite实现github登录的方法 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Git科普文,Git基本原理及各种骚操作(推荐)

    让我来为你详细讲解“Git科普文,Git基本原理及各种骚操作(推荐)”的完整攻略吧。 1. 简介 本文将以 Git 为例,讲解基础和进阶操作,并介绍 Git 的些许基本原理。Git 是一款开源的分布式版本控制系统,使用 Git 可以轻松管理代码,协同开发,备份和还原代码,方便团队合作。 推荐阅读。。 2. 基本原理 Git 是由很多个小的文件组成的仓库,其中…

    GitHub 2023年5月16日
    00
  • shell脚本一键同时推送代码至github和gitee的解决办法

    下面是shell脚本一键同时推送代码至github和gitee的解决办法的完整攻略。 1. 创建git仓库并设置remote 首先要在本地创建git仓库并将代码提交到master分支。 然后,在github和gitee上创建同名的仓库,注意仓库名称必须一致。 接着,在本地git仓库设置remote分别指向github和gitee的仓库: git remote…

    GitHub 2023年5月16日
    00
  • go mod的使用方法小结

    下面我就来详细讲解一下“go mod的使用方法小结”的完整攻略,以及两条示例说明。 什么是go mod 在Go1.11版本中引入的go mod,是一个用于管理依赖项的工具。它可以将应用程序的依赖项转化为模块,并下载它们的代码。Go mod 还具有版本控制的功能,可以确保在编译代码时使用的依赖项版本是稳定的。使用 go mod 可以方便地解决 Go 语言依赖管…

    GitHub 2023年5月16日
    00
  • python高级搜索实现高效搜索GitHub资源

    下面我将为你详细讲解“Python高级搜索实现高效搜索GitHub资源”的完整攻略,该攻略包含以下步骤: 参考GitHub REST API文档,获得API进行高级搜索。 GitHub提供了REST API以实现高级搜索,我们可以按照文档中的指导使用API进行搜索。具体步骤如下: a. 打开GitHub REST API的文档页面:https://docs.…

    GitHub 2023年5月16日
    00
  • IDEA配置码云Gitee的使用详解

    IDEA配置码云Gitee的使用详解 前言 代码托管是当前项目开发的必备环节之一,代码版本管理工具Git因为其分布式、快速的特点,一直是大家比较青睐的选项。而在国内,Gitee是相对比较流行和稳定的代码托管平台。本文将介绍如何在IntelliJ IDEA中配置Gitee。 步骤 第一步:创建新仓库 首先在Gitee上创建新仓库,点击个人中心,选择代码仓库,然…

    GitHub 2023年5月16日
    00
  • 微信小程序 授权登录详解(附完整源码)

    我来详细讲解一下“微信小程序授权登录详解(附完整源码)”的攻略。 标题一:准备工作 在编写微信小程序授权登录功能之前,需要先了解下几个概念: APPID & APPSECRET:在小程序管理后台配置时生成的小程序对应的appID和appSecret。 wx.login():小程序登录系统的API接口。 wx.getUserInfo():小程序获取用户…

    GitHub 2023年5月16日
    00
  • django admin 后台实现三级联动的示例代码

    下面是针对“django admin 后台实现三级联动的示例代码”的完整攻略和两条示例说明: 1. 确定需要实现级联的模型 首先需要在 Django 项目中确定需要实现级联的模型。比如,我们选取了一个三级分类模型,其中包括分类、子分类和子子分类。 2. 安装django-cascading-dropdown插件 接下来需要安装 django-cascadin…

    GitHub 2023年5月16日
    00
  • Go语言包和包管理详解

    Go语言包和包管理详解 包的概念 Go语言中的包是一种组织代码的方式,每个包可以包含多个.go源代码文件及其它非Go源代码文件。每个包都有一个唯一的包名,在代码中通过import关键字载入其它包,从而访问包内的变量、常量、函数和结构体。 在创建自己的包时,包名必须是合法的标识符,并且一般要和源代码文件所在目录的名字相同。 包的导入 在Go语言中,通过impo…

    GitHub 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部