云调用:防薅防泄漏,安全安心用
对于很多开发者而言,调用微信开放服务接口已经是常规操作了。
例如,开发一个小程序,你可以通过调用微信封装好的各类开放组件和 API 接口,接入订阅消息、OCR、直播等服务。
而优雅的调用往往只需要最简单的操作方式,尽量简洁的调用路径可以提升开发效率。
以前,微信开放服务接口的正常调用,需要开发者使用密钥信息获取access_token,并自己维护token的有效期和安全。而获取access_token,涉及到密钥交互请求,对于安全性意识一般或研发条件有限的企业和开发者,容易暴露密钥导致被盗用。
那么,是否有一种更高效,又更安全的调用方式,能让微信生态内的小程序、公众号网页等多端应用,调用得又快又好,让业务敏捷躲开调用Bug?
「云调用」由此诞生,它天然具有「免鉴权调用微信开放服务接口」特性,通过云调用,开发者无需再维护 access_token 等鉴权信息,写少量代码即可轻松调用微信开放服务接口,十分便捷;同时,对于接口请求合法性的判定,云调用全程经由微信私有链路实现,可以有效规避公网访问可能带来的安全风险,性能开销也更小。
以微信支付接口为例,使用云调用,开发者无需关心证书、鉴权、微信支付服务端文档等,一行代码即可调用相应接口。
如何使用云调用?
微信云开发和微信云托管中都支持使用云调用,两者的具体实现形式有所不同:
微信云开发中的云调用,主要通过云函数调用 wx-server-sdk 访问开放服务接口,需要具备 Node.js 等相关知识,因此适合偏前端与全栈开发团队使用。
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/openapi/openapi.html
示例代码如下:
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })
exports.main = async (event, context) => {
return await cloud.openapi.security.msgSecCheck-v1({ content:"安全检查测试文本" })
}
微信云托管中的云调用,不限制开发语言和框架,云托管后台会周期性地将调用开放接口所需的 access_token 令牌(类似于“验证码”),推送到服务的容器实例中,此时只需从容器本地读取“验证码”,再包装请求后就可以调用了,整体上更适合后端和全栈开发团队。
https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/guide/weixin/token.html
示例代码如下:
const fs = require('fs')
const request = require('request')
const token = fs.readFileSync('/.tencentcloudbase/wx/cloudbase_access_token', 'utf-8')
return new Promise((resolve, reject) => {
request({
url: `https://api.weixin.qq.com/wxa/msg_sec_check?cloudbase_access_token=${token}`,
body: JSON.stringify({ content:"安全检查测试文本" }),
},async function (error, response) {
resolve(JSON.parse(response.body))
})
})
无论选择哪种开发模式,使用云调用后,访问都会在微信私有链路中完成,能够保障业务安全性。对于前后端分离架构的业务,更推荐使用微信云托管作为后端服务。
目前,已有大量不同规模的业务,通过微信云托管获得了更快的和更好的安全保障,达到防“薅羊毛”、防DDoS攻击、优化网络延迟等目标。
此外,微信云托管还上线了「无门槛部署」功能,支持通过预设的开源框架快速创建一个微信云托管服务,并通过各种调用方式发起对服务的请求,大幅降低了使用门槛,欢迎体验。
https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/quickstart/template/
登录方式上,微信云托管新增支持了公众号登录。免写 Dockerfile 一键迁移、静态资源存储、WebSocket等新功能也即将上线,敬请期待。
更多资料
微信云托管官网(请在PC端访问以下地址)
微信云托管官方文档
https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/basic/intro.html
微信云托管系列教程
https://developers.weixin.qq.com/community/business/course/00068c2c0106c0667f5b01d015b80d
微信云托管专家1V1服务
https://cloud.tencent.com/act/pro/cloudrun
微信云开发/云托管激励计划