用户在使用PC端时,遇到需要登录的场景,需要通过小程序扫码登录。该类操作,需要完成如下操作。
1、 PC端登录时,拉取登录二维码,服务端返回登录二维码和登录code,登录code用于查询登录状态。
2、PC端获取登录二维码,展示在页面扫码登录位置。接着采用轮询的方式请求登录状态接口,并且要传递第1步获取到的code(通过get的方式)。
3、用户在使用微信扫一扫扫描登录二维码之后,会跳转到登录确认页面。点击登录确认页面,会上报服务端,修改登录状态。
4、在第2步中,如果轮询到登录状态发生改变,则需要做出相应的页面展示。例如登录成功、登录二维码生效等,如果登录二维码生效则重新发起第1步流程。
获取登录二维码
请求方法:GET
是否鉴权:否
请求编码:Content-Type:application/x-www-form-urlencoded
响应编码:Content-Type:application/json;charset=UTF-8
请求地址:index/login/qrCodeMp
请求参数:
参数名 | 参数类型 | 是否必填 | 参数说明 | 示例值 |
---|
- 成功示例:
{
"data": {
"scanCode": "2f60b1e223",
"url": "http://qiniucloudtest.qqdeveloper.com/66e6a2f9d6a32.png",
"expireTime": 300
},
"code": 100,
"msg": "请求成功"
}
参数名 | 参数类型 | 是否必有 | 参数说明 | 示例值 |
---|---|---|---|---|
scanCode | string | 是 | 登录状态code | 见上述示例 |
url | string | 是 | 登录二维码图片地址,用于展示在页面上 | 见上述示例 |
expireTime | number | 是 | 登录二维码有效时间,单位:秒 | 300 |
- 失败示例:
{
"code": 101,
"data": [],
"msg": "系统错误"
}
轮询登录状态
请求方法:GET
是否鉴权:否
请求编码:Content-Type:application/x-www-form-urlencoded
响应编码:Content-Type:application/json;charset=UTF-8
请求地址:index/login/qrCodeLoginState
请求参数:
参数名 | 参数类型 | 是否必填 | 参数说明 | 示例值 |
---|---|---|---|---|
scanCode | string | 是 | 获取登录二维码返回的scanCode |
- 成功示例:
{
"data": {
"state": '2|1|3',
"token": "",
},
"code": 100,
"msg": "登录失效"
}
参数名 | 参数类型 | 是否必有 | 参数说明 | 示例值 |
---|---|---|---|---|
state | string | 是 | 登录状态 | 1扫码确认中 |
token | string | 否 | 登录token | 只有state为3时才会返回该字段 |
- 失败示例:
{
"code": 101,
"data": [],
"msg": "系统错误"
}
扫码确认登录
该接口需要在微信小程序中调用,在用户使用微信扫一扫,跳转到小程序确认页面,点击页面确认登录时使用。
请求方法:POST
是否鉴权:是
请求编码:Content-Type:application/x-www-form-urlencoded
响应编码:Content-Type:application/json;charset=UTF-8
请求地址:index/login/qrCodeLogin
请求参数:
参数名 | 参数类型 | 是否必填 | 参数说明 | 示例值 |
---|---|---|---|---|
scanCode | string | 是 | 用户扫码时获取到的二维码参数 |
- 成功示例:
{
"data": {},
"code": 100,
"msg": "登录成功"
}
参数名 | 参数类型 | 是否必有 | 参数说明 | 示例值 |
---|
- 失败示例:
{
"code": 101,
"data": [],
"msg": "二维码已失效,请使用微信扫一扫,重新扫码"
}