xiaohuilam/laravel-wxapp-login
Composer 安装命令:
composer require xiaohuilam/laravel-wxapp-login
包简介
A laravel plugin to create wechat mini-program login api.
README 文档
README
让 Laravel 应用3分钟内快捷接入微信小程序的扩展
版本适配
单元测试
安装
composer require xiaohuilam/laravel-wxapp-login -vvv
发布
执行以下命令发布路由和 controller
php artisan vendor:publish --tag=wechat-login
确保启用了小程序配置
根据 Issue#11 这条评论 ,请确保 overtrue/laravel-wechat 的 config/wechat.php 启用了小程序的配置
[
/* * 小程序 */
'mini_program' => [
'default' => [
'app_id' => env('WECHAT_MINI_PROGRAM_APPID', ''),
'secret' => env('WECHAT_MINI_PROGRAM_SECRET', ''),
'token' => env('WECHAT_MINI_PROGRAM_TOKEN', ''),
'aes_key' => env('WECHAT_MINI_PROGRAM_AES_KEY', ''),
],
],
],
表结构、模型改动
laravel-wxapp-login 需要在 users 表中添加 openid 的字段,所以需要运行 database/migrations/2019_05_28_060312_users_add_openid.php
php artisan migrate
另外,需要在用户模型中,将 openid 加入到 $fillable 属性:
打开 app\User.php (如果你修改过模型位置,请以自己项目实际位置为准)
class User extends Authenticatable { use Notifiable; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ //... 你原先的字段 'openid', ]; }
配置
WECHAT_MINI_PROGRAM_APPID=#小程序的appid WECHAT_MINI_PROGRAM_SECRET=#小程序的secret
使用
接口使用
在 routes/wechat.php
Route::group(['middleware' => ['guest']], function () { Route::post('login', 'Auth\\WechatLoginController@login')->name('wechat.login'); //这里放未登录的api }); Route::group(['middleware' => ['auth:wechat']], function () { //这里放置你的需要登录的 api 路由,如用户资料API、修改资料API... });
修改注册用户逻辑
在 app/Http/Controllers/Auth/WechatLoginController.php 中修改
方法为:
protected function registerUser($credential)完整的注册逻辑protected function userAttributes($credential)用仅需修改用户属性时,只需覆盖此方法即可
在小程序JS使用
Restful API
在
php artisan tinker
运行 route('wechat.login') 得到微信登录的 api 的 URL, 调用微信登录
let url = '上面获得的url' wx.login({ success: (res) => { wx.request({ url: url, method: 'POST', data: { code: res.code }, header: { Authorization: null }, success: (response) => { // 这里拿到的token = response.data.token,给后面所有需要登录的api都带上 {headers: {Authorization: response.data.token}} }, }) }, })
Websocket
小程序代码
import Echo from 'laravel-echo' let io = require('weapp.socket.io') const echo = new Echo({ client: io, broadcaster: 'socket.io', host: '??', auth: { headers: { Authorization: 'Bearer ' + '上面取得的 token', }, }, }); echo.private(`channel.${user_id}`) .listen(`broadcastAs 后的名字`, (e) => { console.log(e); });
注册 channel.php
Broadcast::channel('channel.{id}', function ($user, $id) { return $user->id == $id; }, ['guards' => ['wechat',]]); //一定要指定 guards!
授权
MIT
鸣谢
- Overtrue's laravel-easywechat
xiaohuilam/laravel-wxapp-login 适用场景与选型建议
xiaohuilam/laravel-wxapp-login 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 916 次下载、GitHub Stars 达 59, 最近一次更新时间为 2019 年 05 月 29 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 xiaohuilam/laravel-wxapp-login 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 xiaohuilam/laravel-wxapp-login 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 916
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 60
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-05-29