基于 Nonebot2 的 QQ 群 OIDC 认证程序,支持 NewAPI
Lonely 自己私下里有一个公益站(怕扛不住所以没公开),但是呢… 对于用户(在 qq 群内)留存率有点苦恼,所以想出来了通过 Nonebot2 QQ Adapter 在 QQ 群内认证并遵循 OAuth2.0 标准
先掏源码:
archive.zip
NewAPI 中的配置:
配置
Well-Known URL<不用填这个 这个目前不支持>
Client ID:<QQ群ID,Bot只会受理指定群的消息>
Client Secret:<你oauth_secrets.json中的密钥>
Authorization Endpoint:https://<domain>/oauth/authorize
Token Endpoint:https://<domain>/oauth/token
User Info Endpoint:https://<domain>/oauth/userinfo
使用教程:
- 解压
- 使用
uv sync命令同步环境,没有 uv 的请看 uv 官方文档 安装 - 配置.env.prod,记得随机生成一个 JWT_SECRET,这个绝对不能给别人!!给了别人就能解码 JWT 了,注意在文件中添加一行
ONEBOT_ACCESS_TOKEN=你的访问令牌,生产环境需要添加 - 打开 data 目录,复制文件 oauth_secrets.json.example 为 oauth_secrets.json,并编辑键值对,键是群号,值(列表)是(多个)OAuth 密钥,可以只配置一个
- 接下来回到项目根目录,通过
uv run bot.py运行项目,记得反代为 HTTPS 协议,不然凭据容易被(中间人)盗取
如何接入 QQ 机器人
在服务器安装 Napcat
使用 docker logs <容器名字,默认napcat> 查看容器日志,打开服务器地址:6099/webui,从日志中找到 token 并登录 Napcat 以及登录 Napcat 上的 QQ
接下来添加连接配置,选择客户端 Websocket,地址填写 ws://<服务器地址>:5800/onebot/v11/ws(因为 NGINX 反代不好用,所以连接),密钥填写你在第三步 配置的连接 Token,不是 secret
接下来确保 Napcat 和 Nonebot 启动后,打开你要应用的 QQ 群,发送登录 123456 测试机器人是否有反应,有反应则代表成功
![[开源分享] NoneBot2 敏感词拦截插件:支持正则、实时热更1](https://xiaohack.oss-cn-zhangjiakou.aliyuncs.com/typecho/images/2026/01/04/20260104100836_6959cba419e07.png!mark)
![[开源分享] NoneBot2 敏感词拦截插件:支持正则、实时热更2](https://xiaohack.oss-cn-zhangjiakou.aliyuncs.com/typecho/images/2026/01/04/20260104100838_6959cba6d6ee6.png!mark)
![[开源分享] NoneBot2 敏感词拦截插件:支持正则、实时热更3](https://xiaohack.oss-cn-zhangjiakou.aliyuncs.com/typecho/images/2026/01/04/20260104100840_6959cba8e61ef.png!mark)