對於很多開發者而言,呼叫微信開放服務介面已經是常規操作了。
例如,開發一個小程式,你可以通過呼叫微信封裝好的各類開放元件和 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
微信雲開發/雲託管激勵計劃