ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] ## wx.login(OBJECT) [【官方说明】](https://developers.weixin.qq.com/miniprogram/dev/api/api-login.html#wxloginobject) * **一般性说明**:小程序的Client(C端的js文件里的代码)向WX的Server发送request,得到response的信息。request不需指定URL。 * **主要结构** ~~~JavaScript wx.login({ timeout: 2000, //ms success({errMsg: ' ', code: ' '}){ ...... }, fail({...}){ ......} }) ~~~ * **作用** 1. 小程序调用wx.login() 获取 **`临时登录凭证code`** ,并回传到开发者服务器。 2. 开发者服务器以code换取 `用户唯一标识openid` 和 `会话密钥session_key`。 3. 之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。 ## wx.getUserInfo(OBJECT) [【官方说明】](https://developers.weixin.qq.com/miniprogram/dev/api/open.html) * **一般性说明**:小程序的Client(C端的js文件里的代码)向WX的Server发送request,得到response的信息。request不需指定URL。 * **主要结构** ~~~JavaScript wx.getUserInfo({ timeout: 2000, //ms success({userInfo:{...}, rawData: Str, signature: Str, encryptedData: Str, iv: Str}){ ...... }, fail({...}){ ......} }) ~~~ * **使用注意** 1. 使用` <button open-type="getUserInfo"></button>` 引导用户主动进行授权操作 2. 当用户未授权过,调用该接口将直接报错 3. 当用户授权过,可以使用该接口获取用户信息 * **`userInfo`参数说明**: ~~~JavaScript //userInfo结构示例 userInfo:{nickName: Str, avatarUrl: Str, gender: Num, city: Str, province: Str, country: Str, language: Str} }) ~~~ | 参数 | 类型 | 说明 | | --- | --- | --- | | nickName | String | 用户昵称 | | avatarUrl | String | 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表132\*132正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。| | gender | String | 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知 | | city | String | 用户所在城市 | | province | String | 用户所在省份| | country | String | 用户所在国家| | language | String | 用户的语言,简体中文为zh_CN| ## wx.request(OBJECT) [【官方说明】](https://developers.weixin.qq.com/miniprogram/dev/api/network-request.html) * **一般性说明**:小程序的Client(C端的js文件里的代码)向小程序的Server发送request,得到response的信息。request必须需指定URL。 * **主要结构** ~~~JavaScript wx.request({ url: Str, data: Obj/Str/Arr, header: Obj, method: Cons, //OPTIONS, GET(默认值), HEAD, POST, PUT, DELETE, TRACE, CONNECT dataType: Str, //json(默认) 如果设为json,会尝试对返回的数据做一次 JSON.parse responseType: Str/Arr,//设置响应的数据类型。合法值:text、arraybuffer success({data: Obj/Str/Arr, statusCode: Num, header: {...}}){ ...... }, fail({...}){ ......} }) ~~~ `tip`:header中的content-type 默认为 'application/json'; ## 关于小程序中网络相关API的说明 [【官方说明】](https://developers.weixin.qq.com/miniprogram/dev/api/api-network.html) 网络API列表: | API | 说明 | |--- |--- | | wx.request | 发起网络请求| | wx.uploadFile | 上传文件| | wx.downloadFile | 下载文件| | wx.connectSocket | 创建 WebSocket 连接| | wx.onSocketOpen | 监听 WebSocket 打开| | wx.onSocketError | 监听 WebSocket 错误| | wx.sendSocketMessage | 发送 WebSocket 消息| | wx.onSocketMessage | 接受 WebSocket 消息| | wx.closeSocket | 关闭 WebSocket 连接| | wx.onSocketClose | 监听 WebSocket 关闭| 在小程序中使用网络相关的 API 时,需要注意下列问题,请开发者提前了解。 1. 服务器域名配置 每个微信小程序需要事先设置一个通讯域名,小程序可以跟指定的域名与进行网络通信。包括普通 HTTPS 请求(`request`)、上传文件(`uploadFile`)、下载文件(`downloadFile`) 和 WebSocket 通信(`connectSocket`) **配置流程** 服务器域名请在 `小程序后台-设置-开发设置-服务器域名` 中进行配置,配置时需要注意: * 域名只支持 https (`request`、`uploadFile`、`downloadFile`) 和 wss (`connectSocket`) 协议; * 域名不能使用 IP 地址或 localhost * 域名必须经过 ICP 备案; * 出于安全考虑,`api.weixin.qq.com` 不能被配置为服务器域名,相关API也不能在小程序内调用。 * 开发者应将 `appsecret` 保存到后台服务器中,通过服务器使用 `appsecret` 获取 `accesstoken`,并调用相关 API。 * 对于每个接口,分别可以配置最多 20 个域名 **HTTPS 证书** 小程序必须使用 HTTPS 请求。小程序内会对服务器域名使用的 HTTPS 证书进行校验,如果校验失败,则请求不能成功发起。由于系统限制,不同平台对于证书要求的严格程度不同。为了保证小程序的兼容性,建议开发者按照最高标准进行证书配置,并使用相关工具检查现有证书是否符合要求。 * HTTPS 证书必须有效。证书必须被系统信任,部署SSL证书的网站域名必须与证书颁发的域名一致,证书必须在有效期内; * iOS 不支持自签名证书; * iOS 下证书必须满足苹果[ App Transport Security (ATS)](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33) 的要求; * TLS 必须支持 1.2 及以上版本。部分旧 Android 机型还未支持 TLS 1.2,请确保 HTTPS 服务器的 TLS 版本支持1.2及以下版本; * 部分 CA 可能不被操作系统信任,请开发者在选择证书时注意小程序和各系统的相关通告。 [Chrome 56/57 内核对 WoSign、StartCom 证书限制周知](https://developers.weixin.qq.com/community/develop/doc/800026caeb042e45681583652b70910a) **跳过域名校验** 在微信开发者工具中,可以临时开启 开发环境不校验请求域名、TLS版本及HTTPS证书 选项,跳过服务器域名的校验。此时,在微信开发者工具中及手机开启调试模式时,不会进行服务器域名的校验。 **在服务器域名配置成功后,建议开发者关闭此选项进行开发,并在各平台下进行测试,以确认服务器域名配置正确。** > 如果手机上出现 “打开调试模式可以发出请求,关闭调试模式无法发出请求” 的现象,请确认是否跳过了域名校验,并确认服务器域名和证书配置是否正确。 2. 关于请求 * 默认超时时间和最大超时时间都是 60s * `request`、`uploadFile`、`downloadFile` 的最大并发限制是 10 个 * 网络请求的 referer header 不可设置。其格式固定为 `https://servicewechat.com/{appid}/{version}/page-frame.html`,其中 `{appid}` 为小程序的 appid,`{version}` 为小程序的版本号,版本号为 0 表示为开发版、体验版以及审核版本,版本号为 devtools 表示为开发者工具,其余为正式版本。 * 小程序进入后台运行后(非置顶聊天),如果 5s 内网络请求没有结束,会回调错误信息 fail `interrupted`;在回到前台之前,网络请求接口调用都会无法调用。 3. 关于服务器返回 **返回值编码** * 建议服务器返回值使用 UTF-8 编码。对于非 UTF-8 编码,小程序会尝试进行转换,但是会有转换失败的可能。 * 小程序会自动对 BOM 头进行过滤。 **回调** * 只要成功接收到服务器返回,无论statusCode是多少,都会进入success回调。请开发者根据业务逻辑对返回值进行判断。 ## 接口调用凭证`access_token` `access_token` 是全局唯一接口调用凭据,开发者调用各接口时都需使用 access_token,请妥善保存。access_token 的存储至少要保留512个字符空间。access_token 的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的 access_token 失效。 [【官方说明】](https://developers.weixin.qq.com/miniprogram/dev/api/token.html) 开发者可以使用 AppID 和 AppSecret 调用本接口来获取 access_token。AppID 和 AppSecret 可登录微信公众平台官网-设置-开发设置中获得(需要已经绑定成为开发者,且帐号没有异常状态)。 AppSecret 生成后请自行保存,因为在公众平台每次生成查看都会导致 AppSecret 被重置。注意调用所有微信接口时均需使用 https 协议。如果第三方不使用中控服务器,而是选择各个业务逻辑点各自去刷新 access_token,那么就可能会产生冲突,导致服务不稳定。 接口地址: `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET` ## How To ?? ### C端扫描二维码(向S端发送信息)后,S端将处理结果推送到C端? webSocket? ### 管理员在C端进行操作后,S端将处理结果推送到有关的C端? webSocket?