Laravel5.1 实现第三方登录认证教程之 - 微信登录
https://laravel-china.org/topics/2451/laravel51-implementation-of-the-third-party-login-authentication-tutorial-wechat-login
前言
近期开发了 PHPHub 的网站应用微信登录,因此编写此文记录开发的过程,希望能帮助到有同样需求的同学。
文章概览
- 准备工作;
- 集成 Package;
- 代码调用。
接下来是详细解说。
准备工作
首先到微信开放平台申请相关的 网站应用,用以获取接口所需的 AppID 和 AppSecret。
一般来说需要花费 3 - 5 个工作日。

集成 Package
我们使用 laravel/socialite 扩展包来进行 OAuth 认证,它提供了完整且上手毫无难度的 OAuth 解决方案。
在此基础上使用其 Driver 扩展 socialiteProviders/weixin 来完成微信的 OAuth 认证流程。
1. 安装 laravel/socialite
如果你已经安装过此 Package,则可以跳过此步骤。
1). 直接运行以下命令安装扩展包
composer require laravel/socialite
2). 在你的 config/app.php 文件中添加以下配置信息
'providers' => [
...
// 注意:下文中要集成 Socialite Driver 扩展,因此将会删除此行配置。
Laravel\Socialite\SocialiteServiceProvider::class,
], 'aliases' => [
...
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
],
2. 安装 socialiteProviders/weixin
1). 直接运行以下命令安装扩展包
composer require socialiteproviders/weixin
2). 在你的 config/app.php 文件中添加以下配置信息
'providers' => [
...
# 注意:如果你之前已经安装了 laravel/socialite,则务必删除掉下面的配置
// 删除这行配置 Laravel\Socialite\SocialiteServiceProvider::class, # 新增配置
\SocialiteProviders\Manager\ServiceProvider::class,
],
3). 在你的 app/Providers/EventServiceProvider.php 文件中添加以下事件处理器
protected $listen = [
\SocialiteProviders\Manager\SocialiteWasCalled::class => [
'SocialiteProviders\Weixin\WeixinExtendSocialite@handle',
],
];
3. 添加配置
1). 在你的 .env 文件中添加以下配置
WEIXIN_KEY=你的AppID
WEIXIN_SECRET=你的AppSecret
WEIXIN_REDIRECT_URI=你的回调地址 # 例如
WEIXIN_KEY=wxba52fab0726b9023
WEIXIN_SECRET=xxxxxxxxxxxxxxxxxx
WEIXIN_REDIRECT_URI=https://laravel-china.org/auth/callback?driver=wechat
2). 在你的 config/services.php 文件中添加以下配置
'weixin' => [
'client_id' => env('WEIXIN_KEY'),
'client_secret' => env('WEIXIN_SECRET'),
'redirect' => env('WEIXIN_REDIRECT_URI'), # 这一行配置非常重要,必须要写成这个地址。
'auth_base_uri' => 'https://open.weixin.qq.com/connect/qrconnect',
],
至此,安装全部完成。
代码调用
准备工作都完成以后,现在就到了接口对接阶段。
1). 添加路由
# 用户点击登录按钮时请求的地址
Route::get('/auth/oauth', 'Auth\AuthController@oauth'); # 微信接口回调地址
Route::get('/auth/callback', 'Auth\AuthController@callback');
2). 在你的 app/Http/Controllers/Auth/AuthController.php 文件里添加以下方法
# 用户点击微信登录按钮后,调用此方法请求微信接口
public function oauth(Request $request)
{
return \Socialite::with('weixin')->redirect();
} # 微信的回调地址
public function callback(Request $request)
{
$oauthUser = \Socialite::with('weixin')->user(); // 在这里可以获取到用户在微信的资料
dd($oauthUser); // 接下来处理相关的业务逻辑 ... }
下图是打印 oauthUser 的结果,供大家参考

至此,已经能获取到用户的微信资料了,接下来你们就可以根据此数据处理自己的相关业务逻辑了。
在这里值得一提的是,我们通过微信的 unionid 来记录用户的信息,而不是 openid。因为针对一个微信开放平台帐号下的应用,同一用户的 unionid 是相同的,这样方便我们以后做多站点的用户数据统一。
附录
Laravel5.1 实现第三方登录认证教程之 - 微信登录的更多相关文章
- cas-5.3.x接入REST登录认证,移动端登录解决方案
一.部署cas-server及cas-sample-java-webapp 1.克隆cas-overlay-template项目并切换到5.3分支 git clone git@github.com:a ...
- 微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo
原文:微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo 教程导航: 微信开放平台 公众号第三方平台开发 教程一 平台介绍 微信开放平台 公众号第三方平台开发 教程二 创建 ...
- 公众号第三方平台开发 教程二 component_verify_ticket和accessToken的获取
公众号第三方平台开发 教程一 创建公众号第三方平台 公众号第三方平台开发 教程二 component_verify_ticket和accessToken的获取 公众号第三方平台开发 教程三 微信公众号 ...
- 公众号第三方平台开发 教程六 代公众号使用JS SDK说明
公众号第三方平台开发 教程一 创建公众号第三方平台 公众号第三方平台开发 教程二 component_verify_ticket和accessToken的获取 公众号第三方平台开发 教程三 微信公众号 ...
- php的laravel框架快速集成微信登录
最终的解决方案是:https://github.com/liuyunzhuge/php_weixin_provider,详细的介绍请往下阅读. 本文面向的是php语言laravel框架的用户,介绍的是 ...
- Asp.Net微信登录-电脑版扫描二维码登录
像京东,一号店等网站都实现了用微信来登录的功能,就是用手机上的微信扫一扫网站上的二维码,微信上确认后,即可自动用微信的帐号登录网站. 一.创建网站应用 在微信开放平台创建一个网站应用 https:// ...
- C#微信登录-电脑版扫描二维码登录
像京东,一号店等网站都实现了用微信来登录的功能,就是用手机上的微信扫一扫网站上的二维码,微信上确认后,即可自动用微信的帐号登录网站. 一.创建网站应用 在微信开放平台创建一个网站应用 https:// ...
- vue之微信登录
参考文章https://www.cnblogs.com/examine/p/4634947.html 微信开放平台和公众平台的区别1.公众平台面向的是普通的用户,比如自媒体和媒体,企业官方微信公众账号 ...
- 网站如何接入第三方登录,微信登录和QQ登录:注册认证篇
第三方登录平台接入 (QQ\微信登录) QQ登录接入 第一步成为QQ应用开发者,审核期限七天 一.所需材料 1.公司注册相关信息 2.营业执照扫描件 微信登录接入 第一步成为微信开发平台开发者,认证费 ...
随机推荐
- 通信网络 ccf
试题编号: 201709-4 试题名称: 通信网络 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 某国的军队由N个部门组成,为了提高安全性,部门之间建立了M条通路,每条通路只 ...
- nginx链接末尾自动补全斜杠
放在locaation里边就行 if (-d $request_filename){ rewrite ^(.*[^/])$ $/ permanent;#加斜杠 } 这样,nginx就会进行判断了,如果 ...
- dom4解析 XML
Java XML解析工具 dom4j介绍及使用实例 Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projec ...
- 洛谷P1968 美元汇率[2017年4月计划 动态规划02]
P1968 美元汇率 题目背景 此处省略maxint+1个数 题目描述 在以后的若干天里戴维将学习美元与德国马克的汇率.编写程序帮助戴维何时应买或卖马克或美元,使他从100美元开始,最后能获得最高可能 ...
- VS插件集合
VS的强大不仅仅在于VS本身的强大. 同时,也有很多好用的插件,可以帮助我们更好的编辑代码, 提高效率. https://marketplace.visualstudio.com/search?tar ...
- hdfs 的存储空间扩展
问题:之前集群上每个节点的的大小为50G, 但是硬盘容量是160G的, 不明白为什么才50个G: 后来发现是因为dfs.data.dir设置的问题,该目录下挂载的磁盘空间的大小就会作为该节点的容量.. ...
- css Position 上下左中右布局
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...
- Div+CSS常见错误总结
CSS+DIV是网站标准(或称“WEB标准”)中常用的术语之一,通常为了说明与HTML网页设计语言中的表格(table)定位方式的区别,因为XHTML网站设计标准中,不再使用表格定位技术,而是采用cs ...
- 【python小随笔】Django+错误日志(配置Django报错文件指定位置)
1: 自定义日志文件.py----------几个文件需要创建日志,就需要重新定义几份 # 定义一个日志文件 创建一个操作日志对象logger file_1 = logging.FileHandle ...
- python fullmatch函数