默认模块 wechatapi.net
Base URLs:
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不单独展示在各个接口内)但是有可能会影响接口的实时响应速度
- 代理TTUID点击下载
地区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 |