QQ快捷登录(BadouCMS 插件)
插件标识:qqlogin
适用版本:BadouCMS V2(ThinkPHP 8.1 + Layui)
遵循官方文档 docs/插件开发指南.md 的目录结构、info.ini 规范与入口类生命周期
一、目录结构
modules/qqlogin/
├── info.ini 插件信息(name/title/intro/author/website/version/state)
├── Qqlogin.php 插件入口类(AppInit / install / uninstall / enable / disable)
├── common.php 插件函数库(qqlogin_config / qqlogin_url / qqlogin_enabled)
├── config.php 插件配置项(安装时写入系统配置,分组 qqlogin)
├── menu.php 后台菜单(安装时写入后台规则表)
├── install.sql 建表 SQL(__PREFIX__ 自动替换为表前缀)
├── uninstall.sql 手动清理 SQL
├── library/
│ ├── QqOauth.php QQ 互联 OAuth2.0 协议封装
│ └── Button.php 前台登录页入口渲染
├── service/
│ └── QqloginService.php 登录/自动注册/绑定/解绑业务编排
├── app/ 安装后复制到站点根目录 app/
│ ├── admin/
│ │ ├── controller/qqlogin/Oauth.php 后台:绑定记录
│ │ ├── model/qqlogin/Oauth.php 后台模型
│ │ ├── lang/zh-cn/qqlogin/oauth.php 后台语言包
│ │ └── view/qqlogin/oauth/index.html 后台列表(bdTable)
│ └── index/
│ ├── controller/Qqlogin.php 前台一级控制器:login / callback / unbind
│ ├── model/qqlogin/Oauth.php 前台模型
│ └── route/qqlogin.php 前台路由(/qqlogin/login 等)
二、安装(重要)
1. 将 qqlogin 目录上传到站点 modules/ 下(即 modules/qqlogin/ 内含 info.ini)。2. 登录后台,刷新任意后台页面即可,无需点击「安装」。
三、QQ 互联配置
1. 前往 QQ 互联 创建网站应用,审核通过后取得 APP ID 与 APP Key。2. 回调地址填写:https://你的域名/qqlogin/callback
(必须与插件配置中的「回调地址」完全一致;若站点启用了 .html 后缀,则两边同时填 https://你的域名/qqlogin/callback.html)。
3. 后台 系统配置 → QQ快捷登录(或菜单「QQ快捷登录 → 参数配置」)填写:

四、前台使用


五、登录逻辑
1. "state" 中携带场景标识与随机串并写入 Session,回调时校验,防止 CSRF 与伪造回调;2. 回调后依次换取 "access_token" → "openid"(含 "unionid")→ 用户资料;
3. 已登录:直接把该 QQ 绑定到当前会员;
4. 未登录:
- 存在绑定记录 → 直接登录("FrontendAuth::direct()",写入 "uid"/"token" Cookie);
- 无绑定记录且开启自动注册 → 以 "qq_xxx" 用户名自动注册会员(昵称、头像取自 QQ 资料),再登录;
- 无绑定记录且未开启自动注册 → 提示先登录再绑定。
六、卸载
后台插件管理中卸载即可:删除后台菜单、删除 "qqlogin" 配置分组。服务与售后
- 提供安装指导与配置说明文档
- 首年免费版本更新支持
- 遇到误拦截问题,凭拦截日志协助定位调整