默认模块 wechatapi.net
Base URLs: wechatapi.net
Authentication
开发API/登录模块
POST (步骤1)获取登录二维码
POST /login/getLoginQrCode
- appId参数为设备ID,首次登录传空,会自动触发创建设备,掉线后重新登录则必须传接口返回的appId,注意同一个号避免重复创建设备 ,以免触发官方风控 - 登录时必须选择本省地区ID,如无本省地区ID请自行购买本省或本市代理IP
- 如果IPAD类型扫码登录提示 "在新设备完成验证以继续登录 " 需要更换type为mac进行登录,切换顺序为ipad-->mac。mac类型可以进行验证,当mac出现新设备验证时,参考执行登录接口。也可以直接使用mac登录
- 取码时传的appId需要与上次登录扫码的微信一致,否则会导致登录失败
如果需要全局代理(即所有接口都走代理,可直接在调用的接口内增加" useProxy:true "字段。useproxy字段默认为false不单独展示在各个接口内)但是有可能会影响接口的实时响应速度
地区ID在前,地区在后
java
110000*北京市|120000*天津市|130000*河北省|140000*山西省|150000*内蒙古
210000*辽宁省|220000*吉林省|230000*黑龙江
310000*上海市|320000*江苏省|330000*浙江省|340000*安徽省|350000*福建省|360000*江西省|370000*山东省
410000*河南省|420000*湖北省|430000*湖南省|440000*广东省|450000*广西省|460000*海南省
500000*重庆市|510000*四川省|520000*贵州省|530000*云南省|540000*西藏自治区
610000*陕西省|620000*甘肃省|630000*青海省|640000*宁夏自治区|650000*新疆自治区
- 若目前支持的regionId中没有您所在的地区,可以自行采购socks5协议代理IP,填写到proxyIp参数中
- 响应结果中的qrImgBase64为二维码图片的base64,前端可使用此值展示给用户扫码。(或使用响应结果中的qrData生成二维码)
- 地区ID仅供测试,如需正常使用业务建议自行购买干净代理ip。
Body 请求参数
json
{
"appId": "",
"proxyIp": "",
"regionId": "320000",
"type": "ipad",
"ttuid": "配合regionId/proxyIp使用,传ttuid程序生成的id"
}
请求参数
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| VideosApi-token | header | string | 是 | PS:API后台-点击访问控制-生成Token |
| body | body | object | 否 | none |
| >> appId | body | string | 否 | 设备ID,首次登录传空,之后传接口返回的appId |
| >> proxyIp | body | string | 否 | 代理IP 格式:socks5://username:password@123.2.2.2 |
| >> regionId | body | string | 是 | 地区 |
| >> type | body | string | 是 | 设备类型:ipad、mac(默认为ipad。 |
| >> ttuid | body | string | 否 | 代理本机ID,需配合 regionId/proxyIp 使用,不单独使用。可临时借用用户的本地网络取码有50%概率跳过ipad验证。 |
详细说明
>> type: 设备类型:ipad、mac(默认为ipad。 独立appid)
返回示例
200 Response
json
{
"ret": 0,
"msg": "string",
"data": {
"qrData": "string",
"qrUrl": "string",
"appId": "string",
"qrImgBase64": "string",
"uuid": "string"
}
}
返回结果
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
返回数据结构
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| >> ret | integer | true | none | none | |
| >> msg | string | true | none | none | |
| >> data | object | true | none | 响应数据 | |
| >>>> qrData | string | true | none | 二维码内包含的信息 | |
| >>>> qrUrl | string | true | none | 二维码直接打开地址 | |
| >>>> appId | string | true | none | 设备ID | |
| >>>> qrImgBase64 | string | true | none | 二维码图片base64 | |
| >>>> uuid | string | true | none | 二维码的uuid |
POST (步骤2)执行登录
POST /login/checkLogin
- 增加ipad人脸识别验证 和mac滑块验证,ipad仅支持IOS平台app扫码验证,mac滑块验证支持app扫码验证和系统自动验证,开发者集成平台也可自行集成APP滑块验证,具体请点击ipad登录或者mac登录查看详情
- 获取登录二维码扫码之后 需每间隔5s调用本接口 来判断是否登录成功,二维码超时时间为120秒 - 登录成功后logininfo有数据,如果没有数据则需要一直执行,直至出现登录数据或者失败为止。
- 新设备登录平台,次日凌晨会掉线一次,重新登录时需调用获取二维码且传appId取码,登录成功后则可以长期在线
- 登录成功后请保存appId与wxid的对应关系,后续接口中会用到
☝️ 首次登录iPad出现**新设备验证**并且**无数字验证码**此时本接口会返回一个二维码网址,开发者需使用IOS设备下载[安盾APP](https://www.pgyer.com/renzhengapp)扫描二维码网址,扫描人脸通过后,再次调用本接口,手机点击确认,则本接口返回登录结果。如果不进行人脸认证则需要切换Mac登录,请查看Mac登录流程 ☝️ 首次登录iPad出现**新设备验证**并且**有数字验证码**直接在captchCode字段输入数字验证码,继续执行登录即可登录。
☝️ 首次登录Mac如果出现新设备验证,可以**选择自动验证**,不需要下载APP。 ☝️ 如果**不选择自动验证**会返回URL。生成二维码之后,需要使用[安卓设备下载APP](https://pan.baidu.com/s/19EEi3Au-IzGT7pN7dQQfFQ?pwd=81rg),扫码进行图形验证。操作完成后继续调用此接口即可通过新设备验证。 ☝️用户若有自己平台App,则可代码接入,无需下载App
ini
<Frame caption="Mac登录流程图,不清楚流程必看">
Body 请求参数
json
{
"appId": "",
"proxyIp": "",
"uuid": "",
"autoSliding": "true"
}
请求参数
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| VideosApi-token | header | string | 是 | none |
| body | body | object | 否 | none |
| >> appId | body | string | 是 | 设备ID |
| >> proxyIp | body | string | 否 | 代理IP 格式:socks5://username:password@123.2.2.2 |
| >> uuid | body | string | 是 | 获取二维码返回的uuid |
| >> captchCode | body | string | 否 | 扫码后手机提示输入的验证码,如未提示数字验证码可不传此字段。 |
| >> autoSliding | body | boolean | 是 | 是否自动验证true/false,仅限mac使用。true为自动验证,false需要用app扫码验证。如果类型为ipad登录时必须传false。 |
返回示例
200 Response
json
{
"ret": 0,
"msg": "string",
"data": {
"uuid": "string",
"headImgUrl": "string",
"nickName": "string",
"expiredTime": 0,
"status": 0,
"loginInfo": {
"uin": 0,
"wxid": "string",
"nickName": "string",
"mobile": "string",
"alias": "string"
}
}
}
返回结果
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
返回数据结构
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| >> ret | integer | true | none | none | |
| >> msg | string | true | none | none | |
| >> data | object | true | none | 响应数据 | |
| >>>> uuid | string | true | none | 二维码的uuid | |
| >>>> headImgUrl | string | true | none | 头像地址 | |
| >>>> nickName | string | true | none | 昵称 | |
| >>>> expiredTime | integer | true | none | 二维码超时时间 | |
| >>>> status | integer | true | none | 登录状态 0:未扫码 1:已扫码未登录 2:登录成功 4:已扫码取消登录 | |
| >>>> loginInfo | object | true | none | 登录成功信息 | |
| >>>>>> uin | integer | true | none | uin | |
| >>>>>> wxid | string | true | none | 微信ID,返回此值则是登录成功 | |
| >>>>>> nickName | string | true | none | 昵称 | |
| >>>>>> mobile | string | true | none | 绑定的手机号 | |
| >>>>>> alias | string | true | none | 微信号 |
POST 弹框登录
POST /login/dialogLogin
- 调用本接口后手机会弹框确认登录页面,点确认后调用执行登录接口检测是否登录成功
地区ID在前,地区在后
java
110000*北京市|120000*天津市|130000*河北省|140000*山西省|150000*内蒙古
210000*辽宁省|220000*吉林省|230000*黑龙江
310000*上海市|320000*江苏省|330000*浙江省|340000*安徽省|350000*福建省|360000*江西省|370000*山东省
410000*河南省|420000*湖北省|430000*湖南省|440000*广东省|450000*广西省|460000*海南省
500000*重庆市|510000*四川省|520000*贵州省|530000*云南省|540000*西藏自治区
610000*陕西省|620000*甘肃省|630000*青海省|640000*宁夏自治区|650000*新疆自治区
- 若目前支持的regionId中没有您所在的地区,可以自行采购socks5协议代理IP,填写到proxyIp参数中
- 使用本接口登录并非100%成功,本接口返回失败后,可通过扫码登录的方式登录
- 以下几种情况无法使用本接口登录:
- 手机点击退出登录
- 新设备登录次日
- 官方风控下线
- 以下几种情况无法使用本接口登录:
Body 请求参数
json
{
"appId": "wx_wR_U4zPj2M_OTS3BCyoE4",
"proxyIp": "",
"regionId": "320000"
}
请求参数
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| VideosApi-token | header | string | 是 | none |
| body | body | object | 否 | none |
| >> appId | body | string | 是 | 设备ID |
| >> proxyIp | body | string | 是 | 代理IP 格式:socks5://username:password@123.2.2.2 |
| >> regionId | body | string | 是 | 地区 |
返回示例
200 Response
json
{
"ret": 0,
"msg": "string",
"data": {
"appId": "string",
"uuid": "string"
}
}
返回结果
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
返回数据结构
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| >> ret | integer | true | none | none | |
| >> msg | string | true | none | none | |
| >> data | object | true | none | 响应数据 | |
| >>>> appId | string | true | none | 设备ID | |
| >>>> uuid | string | true | none | 二维码uuid,执行登录时会用到 |
POST 退出
POST /login/logout
可以只填写appid或者按照示例直接传即可
Body 请求参数
json
{
"appId": "",
"proxyIp": "",
"regionId": "88"
}
请求参数
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| VideosApi-token | header | string | 是 | none |
| body | body | object | 否 | none |
| >> appId | body | string | 是 | 设备ID |
返回示例
200 Response
json
{
"ret": 200,
"msg": "操作成功"
}
返回结果
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
返回数据结构
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| >> ret | integer | true | none | none | |
| >> msg | string | true | none | none |
POST 检查是否在线
POST /login/checkOnline
响应结果的data=true则是在线,反之为离线
Body 请求参数
json
{
"appId": "{{appid}}"
}
请求参数
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| VideosApi-token | header | string | 是 | none |
| body | body | object | 否 | none |
| >> appId | body | string | 是 | 设备ID |
返回示例
200 Response
json
{
"ret": 200,
"msg": "操作成功",
"data": true
}
返回结果
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
返回数据结构
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| >> ret | integer | true | none | none | |
| >> msg | string | true | none | none | |
| >> data | boolean | true | none | none |
POST 异常断线重连
POST /login/reconnection
账号在线,但是收不到回调 调用此接口
Body 请求参数
json
{
"appId": ""
}
请求参数
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| VideosApi-token | header | string | 是 | none |
| body | body | object | 否 | none |
| >> appId | body | string | 是 | 设备ID |
返回示例
200 Response
json
{
"ret": 200,
"msg": "操作成功",
"data": true
}
返回结果
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
返回数据结构
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| >> ret | integer | true | none | none | |
| >> msg | string | true | none | none | |
| >> data | boolean | true | none | none |
POST 无感切换代理ip
POST /login/setProxy
账号更换代理ip,可实现在线切换。 也可退出后重新登录传新的代理ip。
Body 请求参数
json
{
"appId": "{{appid}}",
"proxyIp": "socks5://x:x@111.153.185.21:11332"
}
请求参数
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| VideosApi-token | header | string | 是 | none |
| body | body | object | 否 | none |
| >> appId | body | string | 是 | 设备ID |
| >> proxyIp | body | string | 是 | 代理ip |
返回示例
200 Response
json
{
"ret": 0,
"msg": "string"
}
返回结果
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
返回数据结构
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| >> ret | integer | true | none | none | |
| >> msg | string | true | none | none |