默认模块 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在前,地区在后
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 请求参数
{
"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
{
"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的对应关系,后续接口中会用到
<Frame caption="Mac登录流程图,不清楚流程必看">
Body 请求参数
{
"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
{
"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在前,地区在后
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 请求参数
{
"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
{
"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 请求参数
{
"appId": "",
"proxyIp": "",
"regionId": "88"
}
请求参数
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| VideosApi-token | header | string | 是 | none |
| body | body | object | 否 | none |
| » appId | body | string | 是 | 设备ID |
返回示例
200 Response
{
"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 请求参数
{
"appId": "{{appid}}"
}
请求参数
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| VideosApi-token | header | string | 是 | none |
| body | body | object | 否 | none |
| » appId | body | string | 是 | 设备ID |
返回示例
200 Response
{
"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 请求参数
{
"appId": ""
}
请求参数
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| VideosApi-token | header | string | 是 | none |
| body | body | object | 否 | none |
| » appId | body | string | 是 | 设备ID |
返回示例
200 Response
{
"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 请求参数
{
"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
{
"ret": 0,
"msg": "string"
}
返回结果
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | Inline |
返回数据结构
状态码 200
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| » ret | integer | true | none | none | |
| » msg | string | true | none | none |