前言

本来要求是使用微信进行第三方登陆,所以想着先用 github 测试成功再用微信测试,可是最近拖了好久都还没申请好微信开放平台的 AppID ,所以就只写 github 的第三方登陆吧,估计微信的实现也差不多~

关于OAuth2

关于OAuth2的理解,推荐大家先去看一下阮一峰的文章理解OAuth 2.0,看完这个之后相信就能对 OAuth2 有了一定的了解,因为在 Laravel 里面很多东西都已经封装好了,如果只是单纯的实现功能感觉并不能学到多少东西,Laravel 使用的授权模式是授权码模式。从 Laravel 的官方文档来看,其实几行代码就能实现第三方登陆的功能,但是不一定能满足我们的项目需求。这篇文章也简单记录了博主在学着使用 Laravel 的 Facaces 和 Service 模式。

准备工作

github

首先去 github 上面注册一个 Application :

Personal settings->Applications->Developer applications->Register new application 填写相关信息:

然后就可以得到一个 Client ID 和 Client Secret :

好,到此为止,github上面的准备工作就完成了。


配置

首先在命令行中执行以下命令安装插件:

composer require laravel/socialite

然后在config/app.php文件中注册服务提供者和添加 Socialite 的 facade :

'providers' => [   //只有注册了的服务才能用
// Other service providers... Laravel\Socialite\SocialiteServiceProvider::class,
], 'aliases' => [ //个人理解Facade就是将一些类的很长的路径用一个单词表示
// Other facades...
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
],

然后我们就要到services.php中去配置 github 的 Client ID 和 Client Secret:

'github' => [    //使用env配置文件就省去了部署到服务器时修改代码的麻烦
'client_id' => env('GITHUB_KEY'),
'client_secret' => env('GITHUB_SECRET'),
'redirect' => env('GITHUB_REDIRECT_URI'),
],

在.env文件中添加以下信息(就是在github上面注册的信息):

GITHUB_KEY=02e00704589a50f7f58d
GITHUB_SECRET=5793aefaa0ee643d8d78b3cf4dc7101a477fd406
GITHUB_REDIRECT_URI=http://suip.app/login/github/callback

上面回调的URL一定要和 github 上面填写的一样,不然 github 的服务器检查到不一样会拒绝服务。

开始使用

添加路由

Route::get('login/{provider}', 'Auth\AuthController@redirectToProvider');
Route::get('login/{provider}/callback', 'Autu\AuthController@handleProviderCallback');

控制器

Auth\AuthController控制器中实现 redirectToProvider 和 handleProviderCallback 函数:

public function redirectToProvider()
{
return Socialite::driver('github')->redirect();
} public function handleProviderCallback()
{
$user = Socialite::driver('github')->user();
dd($user);
}

ok,现在访问suip.app/login/github就会重定向到 github 认证的界面:

确认授权后就会重定向到suip.app/login/github/callback,由于在控制器中 dd 了 $user ,所以就能直接显示用户信息了。

到此为止获取用户信息就结束了

Laravel OAuth2 (一) ---简单获取用户信息的更多相关文章

  1. 微信 OAuth2 网页授权获取用户信息

    文档:http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html !!! 微信跟用户没有关系类接口采用了OAUTH2 [ ...

  2. Spring Cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)

    上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: /** * 根据token获取用户信息 * ...

  3. PHP微信公众平台OAuth2.0网页授权,获取用户信息代码类封装demo(二)

    一.这个文件微信授权使用的是OAuth2.0授权的方式.主要有以下简略步骤: 第一步:判断有没有code,有code去第三步,没有code去第二步 第二步:用户同意授权,获取code 第三步:通过co ...

  4. php 微信公众平台OAuth2.0网页授权,获取用户信息代码类封装demo

    get_wx_data.php <?php /** * 获取微信用户信息 * @author: Lucky hypo */ class GetWxData{ private $appid = ' ...

  5. Laravel wxxcx 微信小程序获取用户信息

    wxxcx 是Laravel5微信小程序登录获取用户信息扩展 部署 12345678 # 安装$ composer require iwanli/wxxcx# 注册服务# 在 /config/app. ...

  6. 微信第三方登陆,无需注册一键登录,获取用户信息,PHP实现方法

    今天讲讲利用微信oauth2实现第三方登陆的实现方法. 先说说前提吧! 首先你得是服务号,并且是经过认证的.这样微信会给你很多第三方接口的权限,如果是订阅号或者没有认证的服务号那就不用想了! 一开始你 ...

  7. JAVA获取微信小程序openid和获取公众号openid,以及通过openid获取用户信息

    一,首先说明下这个微信的openid 为了识别用户,每个用户针对每个公众号会产生一个安全的OpenID,如果需要在多公众号.移动应用之间做用户共通,则需前往微信开放平台,将这些公众号和应用绑定到一个开 ...

  8. php 微信登录 公众号 获取用户信息 微信网页授权

    php 微信登录 公众号 获取用户信息 微信网页授权 先自己建立两个文件: index.php  和  getUserInfo.php index.php <?php //scope=snsap ...

  9. Java微信公众平台开发(十六)--微信网页授权(OAuth2.0授权)获取用户基本信息

    转自:http://www.cuiyongzhi.com/post/78.html 好长时间没有写文章了,主要是最近的工作和生活上的事情比较多而且繁琐,其实到现在我依然还是感觉有些迷茫,最后还是决定静 ...

随机推荐

  1. 领域驱动设计系列(2)浅析VO、DTO、DO、PO的概念、区别和用处

    PO:persistant object持久对象 最形象的理解就是一个PO就是数据库中的一条记录.好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象. BO:business object业 ...

  2. GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。

    1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...

  3. Java知识点复习

    总结下java的知识点 final 关键字-方法:不能被子类重写(override)-变量:不能被修改-类:不可以被继承,派生子类 finally 关键字与try/catch语句配合使用,即使有异常抛 ...

  4. java 基本语法元素

    单行注释:  // 多行注释: /*         */   java文档: /**JAVA文档      *注释      */   : :  类似于中文的句号.   语句块:语句块也叫做复合语句 ...

  5. PHP下通过file_get_contents\curl的方法实现获取远程网页内容(别忘了还有PhpRPC)

    [php]PHP中file_get_contents()与file_put_contents()函数细节详解 php函数file_get_contents(一) 案例: 早在2010年时候遇到过这样的 ...

  6. android 数据持久化——I/O操作

    上一节中简单的介绍了File的操作,这一节来说说使用android平台自带对象实现文件的基本操作 主要的两个类:openFileOutput(写)和openFileInput(读) 向文件中写如数据代 ...

  7. Java程序栈信息文件中的秘密(五)

    最近发现在使用jstack工具在导出Java应用的线程栈时有一个小小的窍门,比如Linux环境上有一个用户为appuser,假如以这个用户启动了一个Java进程B,如果想要导出进程B的线程栈,则必须切 ...

  8. CF#52 C Circular RMQ (线段树区间更新)

    Description You are given circular array a0, a1, ..., an - 1. There are two types of operations with ...

  9. 获取执行计划——EXPLAN PLAN

    一般获取执行计划有四种途径:1.执行explain plan,查询结果输出表.2.查询动态性能视图,它显示缓存在库缓存中的执行计划(有时查不出结果是因为执行计划已经不在库缓存中).3.查询AWR或St ...

  10. string模板

    string模块中包含了一个很有用的Template类,可以先写好字符串模板,后期使用的时候直接替换就可以了.         模板中使用$作为占位符前缀,使用{}包裹占位符以支持间断的标量名,使用$ ...