Skip to content
基于微信小程序登录授权机制延伸第三方平台使用
PHP HTML Vue
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
app 添加nginx反向代理实现ssl Jan 1, 2019
bootstrap init project Aug 16, 2018
config 去掉上传图片token Aug 31, 2018
database 修改站点ID字段 Sep 6, 2018
docs update readme Dec 12, 2018
public update readme Dec 12, 2018
resources
routes 授权页面转具体站点 Sep 7, 2018
storage init project Aug 16, 2018
tests init project Aug 16, 2018
.env.example init project Aug 16, 2018
.gitattributes init project Aug 16, 2018
.gitignore swoole添加ssl证书支持 Sep 15, 2018
LICENSE Initial commit Aug 16, 2018
README.md 添加nginx反向代理实现ssl Jan 1, 2019
artisan
composer.json 实现swoole主动curl推送消息 Aug 23, 2018
composer.lock 实现swoole主动curl推送消息 Aug 23, 2018
package.json init project Aug 16, 2018
phpunit.xml init project Aug 16, 2018
server.php init project Aug 16, 2018
webpack.mix.js init project Aug 16, 2018

README.md

基于Laravel、Swoole实现微信小程序登录授权

基于微信小程序登录授权机制延伸第三方平台使用(Websocket方式实现)

在线体验

微信小程序登录平台

环境依赖

  • php>7.1
  • swoole
  • redis

实现原理

实现思路:借用微信小程序中个人开发者使用微信授权登录的功能,再结合微信小程序中B接口生成带参数的小程序码,用户只需扫描小程序码即可进入微信小程序中,再微信小程序中实现登录逻辑以及登录反馈信息。技术上PC端等待反馈登录逻辑信息采用Websocket方式主动推送消息,抛弃采用ajax轮询方式实现,大大提高性能。同时PC端Websocket会话ID及其对应的场景值采用Redis存储,减少数据库压力。

机制原理思路

安装使用

# 从仓库中下载
$ git clone https://github.com/icharle/WechatAuthorization.git

# 进入代码根目录安装依赖
$ composer install

# copy .env文件
$ cp .env.example .env

# 配置数据库相关

# 生成项目key
$ php artisan key:generate

# 生成JWT key
$ php artisan jwt:secret

# 修改.env文件配置微信小程序appID && appSecret
$ WX_APPID = 
$ WX_SECRET = 

# 公开storage/public文件夹
$ php artisan storage:link

# 更改Websocket监听端口
$ 修改app/Console/Swoole.php中第71行,默认为9502端口

# 配置SSL证书,实现wss://xxx.xxx 
  
  # 第①中方法: 原理:通过swoole配置SSL证书  Websocket链接则为:wss://xxx.xxx:9502
    $ 修改app/Console/Swoole.php中注释71行、并且取消注释66-70行代码
    $ 修改app/Console/Swoole.php中第68、69行,放置自己域名的证书
  
  # 第②中方法:(默认实现) 原理:nginx配置SSL证书,通过nginx反向代理websocket实现  Websocket链接则为:wss://xxx.xxx/websocket
    $ location /websocket {  # websocket可以随意修改(自定义值)
    $         proxy_pass http://127.0.0.1:9502; # 9502改为你在swoole中监听的端口
    $         proxy_http_version 1.1;
    $         proxy_set_header X-Real-IP $remote_addr;
    $         proxy_set_header Host $host;
    $         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    $         proxy_set_header Upgrade $http_upgrade;
    $         proxy_set_header Connection "Upgrade";
    $         proxy_set_header X-Real-IP $remote_addr;
    $ }
    
# 启用Websocket并常驻内存(建议用Supervisor 守护进程)
$ php artisan swoole start
You can’t perform that action at this time.