微信小程序云開發(fā) 云調(diào)用

2022-05-12 16:00 更新

云調(diào)用

版本要求:wx-server-sdk >= 0.4.0、開發(fā)者工具 >= 1.02.1904090 (RC版下載)

云調(diào)用是云開發(fā)提供的基于云函數(shù)使用小程序開放接口的能力,目前覆蓋以下使用場(chǎng)景:

  • 服務(wù)端調(diào)用
  • 開放數(shù)據(jù)調(diào)用
  • 消息推送

一、服務(wù)端調(diào)用

云調(diào)用需要在云函數(shù)中通過(guò) wx-server-sdk 使用。在云函數(shù)中使用云調(diào)用調(diào)用服務(wù)端接口無(wú)需換取 access_token,只要是在從小程序端觸發(fā)的云函數(shù)中發(fā)起的云調(diào)用都經(jīng)過(guò)微信自動(dòng)鑒權(quán),可以在登記權(quán)限后直接調(diào)用如發(fā)送模板消息等開放接口。使用方式如下:

1. 查看服務(wù)端接口是否支持云調(diào)用

在服務(wù)端接口列表中羅列了所有的服務(wù)端接口,如果接口支持云調(diào)用,則在接口名稱旁會(huì)帶有 云調(diào)用 的標(biāo)簽。同時(shí),在每一個(gè)服務(wù)端接口文檔中,如果接口支持云調(diào)用,也會(huì)有專門的支持說(shuō)明以及相應(yīng)的使用文檔。

2. 查看接口的云調(diào)用文檔

在支持云調(diào)用的接口文檔中,會(huì)分別列出 HTTPS 調(diào)用的文檔及云調(diào)用的文檔,云調(diào)用文檔同 HTTPS 調(diào)用文檔一樣包含請(qǐng)求參數(shù)、返回值及示例。

3. 為云函數(shù)聲明所需調(diào)用的接口

接著,需要配置云調(diào)用權(quán)限,每個(gè)云函數(shù)需要聲明其會(huì)使用到的接口,否則無(wú)法調(diào)用,聲明的方法是在云函數(shù)目錄下的 config.json(如無(wú)需新建)配置文件的 permissions.openapi 字段中增加要調(diào)用的接口名,permissions.openapi 是個(gè)字符串?dāng)?shù)組字段,值必須為所需調(diào)用的服務(wù)端接口名稱。在每次使用微信開發(fā)者工具上傳云函數(shù)時(shí)均會(huì)根據(jù)配置更新權(quán)限,該配置有10分鐘的緩存,如果更新后提示沒(méi)有權(quán)限,稍等10分鐘后再試。以下是一個(gè)示例的聲明了使用發(fā)送模板消息接口的配置文件:

{
  "permissions": {
    "openapi": [
      "templateMessage.send"
    ]
  }
}

4. 在云函數(shù)中使用云調(diào)用

首先云函數(shù)中需要使用版本號(hào)至少 0.4.0 的 wx-server-sdk,建議 wx-server-sdk 始終保持最新,保證云函數(shù)目錄下的 package.json 的 wx-server-sdk 字段為 latest,如本地安裝依賴,請(qǐng)執(zhí)行 npm install --save wx-server-sdk@latest。

接下來(lái),可在云函數(shù)中使用云調(diào)用 API 了。云調(diào)用 API 均掛載在 wx-server-sdk 模塊的 openapi 對(duì)象下,各個(gè)開放接口類別在 openapi 對(duì)象下設(shè)二級(jí)命名空間對(duì)象(如模板消息接口的方法均在 openapi.templateMessage 下),該對(duì)象下掛載該類別下的所有開放方法(比如模板消息的發(fā)送接口是 openapi.templateMessage.send)。各接口從屬的類別名稱和方法名稱可以通過(guò)接口名稱查看,接口名稱均以 <類別>.<方法> 命名,如發(fā)送模板消息的接口名稱是 templateMessage.send。下面是一個(gè)給自己發(fā)送模板消息的示例:

如需可直接運(yùn)行的示例,請(qǐng)?jiān)?IDE 中創(chuàng)建一個(gè)云開發(fā)快速啟動(dòng)模板的項(xiàng)目,其中有包含發(fā)送模板消息的云調(diào)用的示例
const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})
exports.main = async (event, context) => {
  try {
    const result = await cloud.openapi.templateMessage.send({
      touser: cloud.getWXContext().OPENID, // 通過(guò) getWXContext 獲取 OPENID
      page: 'index',
      data: {
        keyword1: {
          value: '339208499'
        },
        keyword2: {
          value: '2015年01月05日 12:30'
        },
        keyword3: {
          value: '騰訊微信總部'
        },
        keyword4: {
          value: '廣州市海珠區(qū)新港中路397號(hào)'
        }
      },
      templateId: 'TEMPLATE_ID',
      formId: 'FORMID',
      emphasisKeyword: 'keyword1.DATA'
    })
    // result 結(jié)構(gòu)
    // { errCode: 0, errMsg: 'openapi.templateMessage.send:ok' }
    return result
  } catch (err) {
    // 錯(cuò)誤處理
    // err.errCode !== 0
    throw err
  }
}

二、開放數(shù)據(jù)調(diào)用

對(duì)返回敏感開放數(shù)據(jù)的小程序端接口,從基礎(chǔ)庫(kù) 2.7.0 起,如果小程序已開通云開發(fā),則可在開放數(shù)據(jù)接口的返回值中獲取到唯一對(duì)應(yīng)敏感開放數(shù)據(jù)的 cloudID,通過(guò)云調(diào)用可以直接獲取到開放數(shù)據(jù),具體使用方法見 云調(diào)用直接獲取開放數(shù)據(jù)。

三、消息推送

云開發(fā)也支持通過(guò)云函數(shù)接收小程序消息推送(如接收到客服消息時(shí)觸發(fā)云函數(shù)),具體接入方式見消息推送。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)