This commit is contained in:
wixy 2022-05-14 23:15:19 +08:00
parent edef5f9022
commit 8ebe017437
19 changed files with 415 additions and 62 deletions

View File

@ -1,36 +0,0 @@
# QuickAuth
#### Description
QuickAuth是一个免费、便捷的第三发登录平台
#### Software Architecture
Software architecture description
#### Installation
1. xxxx
2. xxxx
3. xxxx
#### Instructions
1. xxxx
2. xxxx
3. xxxx
#### Contribution
1. Fork the repository
2. Create Feat_xxx branch
3. Commit your code
4. Create Pull Request
#### Gitee Feature
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
4. The most valuable open source project [GVP](https://gitee.com/gvp)
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)

View File

@ -3,35 +3,18 @@
#### 介绍
QuickAuth是一个免费、便捷的第三发登录平台
#### 软件架构
软件架构说明
#### 支持的第三方登录
- 微信
- QQ
- Github
#### 安装教程
#### 软件特点
1. xxxx
2. xxxx
3. xxxx
1. 简单易用接口文档清晰完善并提供Typecho WordPress插件
2. 接入免费,个人可免费接入,不需要企业资质,不需要进行微信认证
3. 支持定制,微信登录可自定义小程序图标,可自定义扫码登录页面(待完善)
#### 使用说明
1. xxxx
2. xxxx
3. xxxx
#### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
#### 特技
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
请参考 [接入文档](https://qauth.cn/doc/index.html)

35
docs/README.md Normal file
View File

@ -0,0 +1,35 @@
## QuickAuth介绍
> QuickAuth简称 QAuth) 是一个快捷扫码登陆项目
该项目致力于帮助个人开发者为自己的项目接入扫码登陆功能
### 接入指南
- [接入指南](guide/)
- [信息的加解密](other/encrypt)
### 接口列表
1. [扫码界面(/qrconnect)](/guide/method1/qrconnect)
2. [获取用户信息(/user)](/guide/method1/user)
3. [获取二维码(/qrcode)](/guide/method2/qrcode)
4. [获取扫码状态(/qrcode/state)](/guide/method2/state)
5. [用户信息解密(/decrypt)](/guide/method2/decrypt)
### 接入应用
- [QuickAuth](https://qauth.cn) QuickAuth项目网站
- [SiliSchedule](https://sc.wixy.cn) HTTP定时任务管理系统
- [UltronBlog](https://blog.wixy.cn) wixy的个人博客
### 相关插件
- [QuickAuthLogin](https://gitee.com/wixy/QuickAuthLogin) Typecho博客微信扫码登录插件
- [QuickAuthLogin-WP](https://gitee.com/wixy/QuickAuthLogin-WP) WordPress微信扫码登录插件
### 其他
- [更新历史](other/update)
- [开发计划](other/plan)

3
docs/_navbar.md Normal file
View File

@ -0,0 +1,3 @@
* [问题反馈](https://support.qq.com/products/384899)
* [QuickAuth首页](https://qauth.cn ':target=_self')
* [作者博客](https://blog.wixy.cn)

15
docs/_sidebar.md Normal file
View File

@ -0,0 +1,15 @@
* [网站首页](https://qauth.cn ':target=_self')
* [文档首页](/)
* [接入指南](guide/)
* [接入方式一(简单)](guide/method1/)
* [调用扫码界面](guide/method1/qrconnect)
* [获取用户信息](guide/method1/user)
* [接入方式二(高级)](guide/method2/)
* [获取二维码](guide/method2/qrcode)
* [扫码状态](guide/method2/state)
* [用户信息解密](guide/method2/decrypt)
* [其他](other/)
* [信息的加解密](other/encrypt)
* [接入应用及插件](other/apps)
* [更新历史](other/update)
* [开发计划](other/plan)

24
docs/guide/README.md Normal file
View File

@ -0,0 +1,24 @@
# 接入指南
## #方式一(简单)
> 前端点击微信扫码登录按钮跳转到QuickAuth扫码登录界面或者弹出扫码登录窗口用户扫码完成后重定向到开发者配置的回调地址并携带相应的参数
#### 特点
- 接入流程简单快捷
- Typecho和WordPress可以直接使用插件无代码接入
[查看详情](/guide/method1/)
## #方式二(高级)
> 开发者通过接口获取二维码并展示用户扫码授权完成后QuickAuth向开发者配置的回调地址发起授权请求并传入用户信息开发者根据调用参数和回传参数识别用户登录情况
#### 特点
- 可自行获取二维码,自定义登录界面及流程
- 自定义程度高
[查看详情](/guide/method2/)

View File

@ -0,0 +1,28 @@
## #方式一
> 前端点击微信扫码登录按钮跳转到QuickAuth扫码登录界面或者弹出扫码登录窗口用户扫码完成后重定向到开发者配置的回调地址并携带相应的参数
### 接口列表
1. [扫码界面(/qrconnect)](/guide/method1/qrconnect)
2. [获取用户信息(/user)](/guide/method1/user)
#### 创建应用
1、登录[quickauth](https://qauth.cn)网站并创建[接入应用](https://qauth.cn/app)
2、填写详细信息和回调地址并发布应用
3、记住`AppKey`
#### 获取解密密钥
进入[用户中心](https://qauth.cn/config/secret)获取`UserSecretKey`
#### 修改现有项目
1、修改自己项目的登录逻辑携带参数appkey和state跳转到[扫码界面](/guide/method1/qrconnect)
2、用户扫码并授权后界面跳转到应用配置的回调地址并带上参数`code`和`state`
3、开发者使用code、Appkey、UserSecretKey发起[获取用户信息](/guide/method1/user)请求并根据返回信息完成登录逻辑

View File

@ -0,0 +1,26 @@
### QuickAuth扫码登录界面
#### 1、接口地址
> http://api.qauth.cn/qrconnect
#### 2、接口说明
开发者应用点击扫码登录时跳转的扫码登录界面用户扫码并完成登录授权后界面重定向到应用配置的回调地址上并携带code和state参数
#### 3、请求参数
|参数|必须|备注|
|--|--|--|
|appkey|是|开发者在QuickAuth网站创建应用的AppKey|
|state|是|开发者应用附加信息|
|popup|否|true或者false默认false<br />开发者使用window.open()打开界面时可以设置为true<br />用户授权完成后自动关闭弹窗并使主页面重定向|
#### 4、重定向时携带的参数
|参数|说明|
|--|--|
|code|用于获取授权用户信息的code该code只能使用一次|
|state|调用时设置的state|
> 示例: https://api.qauth.cn/qrconnect?appkey=123&state=login

View File

@ -0,0 +1,30 @@
### 通过code获取用户信息接口
#### 1、接口地址
> http://api.qauth.cn/user
#### 2、接口说明
通过code、appkey、usersecret获取用户信息接口
#### 3、请求类型
请求类型:`GET`
#### 4、请求参数
|参数|说明|必须|备注|
|--|--|--|--|
|code|用户信息获取标识|是|用户完成扫码登录后重定向到开发者的应用回调地址时携带的参数|
|appkey|应用标识|是|开发者在QuickAuth网站创建应用的AppKey|
|secret|加密秘钥|是|开发者在QuickAuth网站中的UserSecretKey|
|isTest|是否测试调用|否|true or false, QuickAuth网站中点测试按钮生成的code可调用正式环境请勿传该参数|
5、返回结果
|key|value|说明|
|--|--|--|
|code|0或1|正确0错误1|
|msg|string|提示信息|
|res|结果|用户的基本信息包含openid、nickname、avatarurl|

View File

@ -0,0 +1,41 @@
## #方式二
> 开发者通过接口获取二维码并展示用户扫码授权完成后QuickAuth向开发者配置的回调地址发起授权请求并传入用户信息开发者根据调用参数和回传参数识别用户登录情况
### 接口列表
1. [获取二维码(/qrcode)](/guide/method2/qrcode)
2. [获取扫码状态(/qrcode/state)](/guide/method2/state)
3. [用户信息解密(/decrypt)](/guide/method2/decrypt)
#### 创建应用
1. 登录[quickauth](https://qauth.cn)网站并创建[接入应用](https://qauth.cn/app)
2. 填写详细信息和回调地址并发布应用
3. 记住`AppKey`
#### 获取解密密钥
进入[用户中心](https://qauth.cn/config/secret)获取`UserSecretKey`
#### 修改现有项目
修改自己项目的登录逻辑,发起[获取二维码](/api/qrcode)请求
用户扫码后QuickAuth会向上面配置的回调地址并发起授权请求
请求类型:`POST`
请求的Content-Type`application/x-www-form-urlencoded`
请求内容
|key|说明|
|--|--|
|appkey|用户创建应用的appkey|
|state|用户调用获取二维码接口时的扫码标识<br/>开发者可根据此信息识别登录用户
|encryptedData|用户加密信息([信息的加密解密](/guide/encrypt)|
|iv|用户信息加密初始向量|
开发者收到授权请求后需要解密和实现登录逻辑,完成后需返回字符串`success`

View File

@ -0,0 +1,31 @@
### QuickAuth 用户信息解密接口
#### 1、接口地址
> http://api.qauth.cn/decrypt
#### 2、接口说明
加密数据解密接口
#### 3、请求类型
请求类型:`POST`
Content-Type: `application/json`
#### 4、请求参数
|参数|说明|必须|备注|
|--|--|--|--|
|encryptedData|加密数据|是|用户授权登录后<br/>qauth调用开发者应用回调地址是发送的数据|
|key|加密密钥|是|开发者在qauth网站设置的加密密钥|
|iv|加密初始向量|是|用户授权登录后 qauth调用开发者应用回调地址是发送的数据|
5、返回结果
|key|value|说明|
|--|--|--|
|code|0或1|正确0错误1|
|msg|string|提示信息|
|res|结果|解密的用户信息|

View File

@ -0,0 +1,30 @@
### QuickAuth 获取二维码接口
#### 1、接口地址
> http://api.qauth.cn/qrcode
#### 2、接口说明
通过应用appkey和用户识别码state 获取登陆二维码
#### 3、请求类型 `GET`
#### 4、请求参数
|参数|必须|备注|
|--|--|--|
|appkey|是|创建应用程序的AppKey|
|state|是|开发者应用的用户识别码,授权登录后回原样传回|
#### 5、返回结果
|正确结果|二维码图片|
|--|--|
|错误结果|{code=1,msg:"错误原因"}|
注意:正常返回时会返回响应头`qid`,开发者可以使用`qid`获取到用户的扫码状态
#### 6、示例
> http://api.qauth.cn/qrcode?appkey=123&state=123

View File

@ -0,0 +1,30 @@
### QuickAuth 获取扫码状态接口
#### 1、接口地址
> http://api.qauth.cn/qrcode/state
#### 2、接口说明
通过`qid`获取询二维码的扫码状态
`qid`是在用户请求二维码时正常情况下返回的响应头
#### 3、请求类型 `GET`
#### 4、请求参数
|参数|必须|备注|
|--|--|--|
|qid|是|在获取二维码时返回的响应头|
5、返回结果
|key|value|说明|
|--|--|--|
|code|0或1|正确0错误1|
|msg|string|提示信息|
|res|结果|`create`: 已创建未扫码<br/>`scan`:用户已扫码<br/>`auth`:用户已授权|
6、示例
> http://api.qauth.cn/qrcode/state?qid=4a6a6e14fe51484f8ce257c242a3d88e

32
docs/index.html Normal file
View File

@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<title>QuickAuth - 接入文档</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="description" content="QuickAuth扫码登录平台">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<link rel="stylesheet" href="//unpkg.com/docsify/lib/themes/vue.css">
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?8e593694ab4a6165552b5cbf39823a6b";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</head>
<body>
<div id="app">Loading</div>
<script>
window.$docsify = {
name: 'QuickAuth - 接入文档',
repo: '',
loadSidebar: true,
loadNavbar: true
}
</script>
<script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
</body>
</html>

2
docs/other/README.md Normal file
View File

@ -0,0 +1,2 @@
### QuickAuth 接口列表

14
docs/other/apps.md Normal file
View File

@ -0,0 +1,14 @@
### QuickAuth 登录接入应用
<br/>
### 应用
- [QuickAuth](https://qauth.cn) QuickAuth项目网站
- [SiliSchedule](https://sc.wixy.cn) HTTP定时任务管理系统
- [UltronBlog](https://blog.wixy.cn) wixy的个人博客
### 插件
- [QuickAuthLogin](https://gitee.com/wixy/QuickAuthLogin) Typecho博客微信扫码登录插件
- [QuickAuthLogin-WP](https://gitee.com/wixy/QuickAuthLogin-WP) WordPress微信扫码登录插件

22
docs/other/encrypt.md Normal file
View File

@ -0,0 +1,22 @@
### QuickAuth 用户信息的加解密
#### 加密方法
QuickAuth对用户信息使用的是AES对称加密
1. 对称解密使用的算法为 AES-128-CBC
2. 数据采用PKCS#7填充
3. 对称解密的目标密文为 Base64_Decode(encryptedData)
4. 对称解密秘钥是用户中心获取的`AesEncryptKey`
5. 对称解密算法初始向量iv为发起授权请求时的参数
<br/>
#### 解密
开发者需要对接口返回的加密数据`encryptedData`进行解密
开发者有两种方式解密:
1. 自行实现AES解密方法
2. 调用qauth的解密接口[decrypt](/api/decrypt)

5
docs/other/plan.md Normal file
View File

@ -0,0 +1,5 @@
### QuickAuth 开发计划
- [ ] 接入Github登录
- [ ] 接入QQ登录
- [ ] 小程序自定义登录页面

38
docs/other/update.md Normal file
View File

@ -0,0 +1,38 @@
### QuickAuth 更新记录
#### 2022-04-28
- 更新后台首页,展示推荐接入应用
- 部分BUG修复
#### 2022-04-08
- 新增应用界面修改
- 新增普通类型接入方式测试功能
- 更新Typecho登录插件0.9.3版本支持Typecho 1.2
#### 2022-03-09
- 网站首页改版
- 接入文档更新
- 更新平台应用管理界面,简化录入方式
- 新增接入类型及测试功能
- 新增快捷授权登录功能(通过小程序发送订阅消息授权登录,无需扫码)
- qrconnect api新增Referer验证功能
#### 2022-03-07
- 更新Typecho登录插件0.9.1版本
#### 2022-02-07
- 新增WordPress登录插件
#### 2022-01-27
- 新增简单qrconnect接入模式简化接入流程
- 新增Typecho登录插件
#### 2022-01-19
- 初版上线