一、微信Oauth认证流程
授权码
https://open.weixin.qq.com/connect/oauth2/authorize?
appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE
#wechat_redirect
参数介绍:
appid:公众号的唯一标识 : 之前在测试平台申请的测试appid
redirect_uri: 授权后重定向回调地址:这个地址就是之前填写的域名下的具体项目的访问方法
response_type:参数就是code
scope:作用域
snsapi_base : 不弹出授权界面,直接跳转只能获取用户的openid
snsapi_userinfo:弹出授权界面,可以拿到用户的详细信息
我们填写 snsapi_userinfo
state: 不用在意系统自动带上的(微信自动生成一个字符串128字节的判断用
户的操作以及连接的有效性)
#wechat_redirect: 没有解释就是需要带上
- 工作原理
二、Easywechat
- 安装发布
# Laravel >= 5.8
composer require "overtrue/laravel-wechat:~5.0"
# 发布
php artisan vendor:publish --provider="Overtrue\LaravelWeChat\ServiceProvider"
- 路由打印
#打印出所绑定的所有服务
Route::get('/',function(){
return app()->getBindings();
})
- 配置.env配置
#easywechat配置
WECHAT_OFFICIAL_ACCOUNT_APPID= #微信appID
WECHAT_OFFICIAL_ACCOUNT_SECRET= #微信appsecret
WECHAT_OFFICIAL_ACCOUNT_TOKEN= #自定义 例如:hahah
WECHAT_OFFICIAL_ACCOUNT_OAUTH_CALLBACK= #认证成功后回调地址
- 使用
//添加中间件的配置在 app/Http/Kernel.php 中添加路由中间件
protected $routeMiddleware = [
// ...
'wechat.oauth' => \Overtrue\LaravelWeChat\Middleware\OAuthAuthenticate::class,
];
Route::get('user', function(){
$user = session('wechat.oauth_user.default'); // 拿到授权用户资料
dd($user);
})->middleware('wechat.oauth');
注意:
- easywechat的数据通过session进行存储,而laravel的中间件中只有web默认执行StartSession中间件,所以进行api开发时需要开启session中间件
开启后在路由中进行使用
- 本地ssl判别证书太旧,导致链接报错ssl证书不正确。
2.1 下载最新的cacert.pem
2.2 放在【:path\to\php\extras\ssl\cacert.pem】也就是php路径下的【extras\ssl\】文件夹里面。
2.3 打开【php.ini】文件,找到最后面的【curl.cainfo = 】修改为【curl.cainfo =“E:\xampp\php\extras\ssl\cacert.pem”】,保存即可。