18221533805
在公眾號中使用云開發
上海微信小程序開發制作、APP、網站、小程序定制、小程序外包開發公司

在公眾號中使用云開發

2022-05-08

在公眾號中使用云開發

微信云開(kai)發(fa)已支持在Web 網頁中(zhong)使用(yong)環境(jing)共享,即一個(ge)小程序(xu)的(de)云開(kai)發(fa)資(zi)源可以授權(quan)共享給同主體下(xia)多個(ge)公(gong)(gong)眾(zhong)號(hao)(或公(gong)(gong)眾(zhong)號(hao)授權(quan)的(de)web網頁)使用(yong)。

同一主體下的(de)某(mou)個已開(kai)(kai)通(tong)云(yun)開(kai)(kai)發的(de)小程序授權(quan)共享環境給(gei)該公眾號(hao)(hao)后,在(zai)(zai)該公眾號(hao)(hao)網(wang)頁(ye)中(zhong),則可以通(tong)過云(yun)開(kai)(kai)發 Web SDK 的(de)接口(kou)發起登錄(內部會進行公眾號(hao)(hao)網(wang)頁(ye)授權(quan)),登錄后可以在(zai)(zai)云(yun)函數(shu)中(zhong)獲(huo)取用(yong)戶信(xin)息(xi)、及使用(yong)公眾號(hao)(hao)的(de)服(fu)務端接口(kou)。如果網(wang)頁(ye)沒有(you)綁定(ding)公眾號(hao)(hao)或者不需(xu)要微信(xin)登錄態,也(ye)可以直接使用(yong) Web 未(wei)登錄模式(shi)訪問云(yun)開(kai)(kai)發資源。

注意:Web SDK 使(shi)用(yong)(yong)(yong)公眾號(hao)登錄態(tai),需要使(shi)用(yong)(yong)(yong)靜(jing)態(tai)網站托(tuo)管綁定(ding)的默(mo)認域(yu)名(ming)或自定(ding)義域(yu)名(ming)(因(yin)自 iOS 14 起封禁第三方 cookie,在 Web SDK 中(zhong)使(shi)用(yong)(yong)(yong)靜(jing)態(tai)托(tuo)管域(yu)名(ming)私有鏈路訪問微信服務來保障(zhang)安全(quan)及使(shi)用(yong)(yong)(yong)第一方 cookie),參考 第三方 Cookie 限制(zhi)說明

在(zai)微信客戶端內打(da)開的 Web 網頁(ye)可以進行公眾號網頁(ye)授權并且有登錄態的安全訪(fang)問云開發(fa)資源(yuan)。有以下步驟:

  1. 需要一個有網頁授權權限的公(gong)眾號 A、及一個同主體的已開通(tong)云開發(fa)的小程序 B

  2. 小(xiao)程序 B 在云開發控制(zhi)臺中通過 “環(huan)境共(gong)享” 能(neng)力,將(jiang)一(yi)個或多個環(huan)境授權共(gong)享給公(gong)眾號 A 使用(yong)

  3. 公眾號 A 的(de)(de)網頁在微信客(ke)戶端(duan)內使用云(yun)開發 Web SDK 登(deng)錄(lu),即可正常訪問小(xiao)程序 A 已授權(quan)共享的(de)(de)云(yun)開發環境資源(yuan)

整個流(liu)程涉及的接(jie)口少且簡單易用,詳細(xi)介紹如下:

步驟一:準備公眾號與小程序

公眾號準備:

  1. 公眾(zhong)號(hao)需有使用(yong)網頁授權的權限

  2. 配置好網頁授權的回(hui)調(diao)域名(ming)

  3. 配置好(hao) JS 安全域(yu)名

小程序準備:

  1. 開通云開發

  2. 前往(wang)云(yun)開(kai)發(fa)控制臺-更多-環(huan)境(jing)(jing)共享,開(kai)通環(huan)境(jing)(jing)共享

步驟二:小程序將環境共享給公眾號使用

如果公眾號 A 和小程序 B 同主體,則小程序 B 可以在 1.03.2009140 或以(yi)上版本的開發(fa)者工(gong)具云(yun)開發(fa)控(kong)制臺的 “環(huan)境(jing)共享” 中(zhong),將其(qi)一個或多(duo)個環(huan)境(jing)的全部或部分資源能力授(shou)(shou)權給(gei)公(gong)眾(zhong)號(hao)使用。授(shou)(shou)權完成后,公(gong)眾(zhong)號(hao)網頁可以(yi)訪問小(xiao)程(cheng)序 B 的云(yun)開發(fa)資源的已授(shou)(shou)權部分。

步驟三:網頁登錄

在公眾號網頁中,可以使用云開發 Web SDK 同時完成公眾號網頁授權和云開發登錄。使用 Web SDK 完成登錄流程也非常簡單,必要的僅有 checkLoginstartLogin 這兩個 API。必要的(de)登錄流程(cheng)如下:

  1. 云開發登錄:調用 checkLogin 檢查網頁云開發登錄狀態,如果未登錄則調用 startLogin 發起調用,發起完成(cheng)后重復該步驟;如果已登(deng)錄則(ze)進行下一(yi)步

  2. 獲取對(dui)應小程序(xu)的(de)訪問(wen)授(shou)權:在代(dai)碼(ma)中使用一個(ge)小程序(xu)的(de)一個(ge)環(huan)境的(de)資(zi)源時,需(xu)初(chu)始化并獲取對(dui)方(fang)的(de)授(shou)權,示例代(dai)碼(ma)如下:

// 初始化一個實例,聲明要使用哪個小程序哪個云環境的資源const c = new cloud.Cloud({
  appid: '公眾號 AppID',
  resourceAppid: '資源方小程序 AppID',
  resourceEnv: '資源方小程序云環境 ID',})// 初始化,等待授權關系校驗通過以及目標云環境的 cloudbase_auth 函數返回授權await c.init()

資源方 cloudbase_auth 函數簡(jian)易返回示例:

const cloud = require('wx-server-sdk')cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV})// 云函數入口函數exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()

  console.log(event)
  console.log(wxContext)
  // 跨賬號調用時,由此拿到來源方小程序/公眾號 AppID
  console.log(wxContext.FROM_APPID)
  // 跨賬號調用時,由此拿到來源方小程序/公眾號的用戶 OpenID
  console.log(wxContext.FROM_OPENID)
  // 跨賬號調用、且滿足 unionid 獲取條件時,由此拿到同主體下的用戶 UnionID
  console.log(wxContext.FROM_UNIONID)

  return {
    errCode: 0,
    errMsg: '',
    auth: JSON.stringify({
      // 自定義安全規則
      // 在前端訪問資源方數據庫、云函數等資源時,資源方可以通過
      // 安全規則的 `auth.custom` 字段獲取此對象的內容做校驗,
      // 像這個示例就是資源方可以在安全規則中通過 `auth.custom.x` 獲取
      x: 1,
    }),
  }}

資源方 cloudbase_auth 云(yun)函數返(fan)回的對象結構協議:

屬性類型默認值必填說明
errCodenumber
自定義錯誤碼,0 表示授權通過,非 0 表示拒絕授權,會透傳回給調用方
errMsgstring
自定義錯誤信息,errCode 非 0 時透傳回給調用方
authstring
安全規則對象,必須序列化成字符串

auth 字段額外說明:該字段用于自定義安全規則,當定義了之后,調用方在前端訪問資源方的數據庫、云函數等資源時,資源方可以通過安全規則的 auth.custom 字段(duan)獲取此對象的內容做安全規則校驗。

步驟四:訪問資源及使用公眾號特有能力

登錄(lu)后,可(ke)以訪問獲(huo)得授權的小程序的云(yun)開(kai)發資源、使(shi)用公眾號 JSSDK、獲(huo)取公眾號用戶信息、發起公眾號云(yun)調用(免鑒權使(shi)用公眾號服務端接口)等。以下一一舉(ju)例說明。

1. 使用公眾號 JSSDK

使用公眾號 JSSDK 的時是需要進行 wx.config 并傳入簽名的,在完成云開發登錄之后,可以使用云開發 Web SDK 提供的 getJSSDKSignature 方法完成獲取網頁 wx.config 所需簽名,示例:

const res = await cloud.getJSSDKSignature({
  url: '要簽名的網頁 URL'})wx.config({
  appId: '公眾號 AppID', // 必填,公眾號的唯一標識
  timestamp: res.timestamp + '', // 必填,生成簽名的時間戳
  nonceStr: res.nonceStr, // 必填,生成簽名的隨機串
  signature: res.signature,// 必填,簽名
  jsApiList: ['JS API 名'] // 必填,需要使用的JS接口列表})

2. 訪問微信云開發資源

使用 Web SDK 完(wan)成云開發(fa)登(deng)錄后,想要訪問某個小程序(xu)的云開發(fa)資源時,需聲明(ming)相(xiang)應實例并等待(dai)初始(shi)化(hua)(對方授權(quan))完(wan)成,等待(dai)完(wan)成后即可以相(xiang)同的 API 訪問所有云資源:

// 聲明const c1 = new wx.cloud.Cloud({
  appid: '公眾號 AppID',
  resourceAppid: '資源方 AppID',
  resourceEnv: '資源方環境 ID',})// 等待初始化完成await c1.init()// 然后照常訪問指定環境下的資源c1.callFunction({
  name: '',
  data: {},}).then(console.log)

3. 獲取公眾號用戶信息

在公眾號網頁中發起云函數調用時,在云函數中可以通過 getWXContext 獲取得到公眾號的(de)用(yong)戶信息和(he)應用(yong)信息,具(ju)體(ti)字段有:

屬性類型說明
FROM_APPIDstring來源方 AppID,即公眾號 AppID
FROM_OPENIDstring來源方用戶 OpenID,即公眾號對應的用戶 OpenID
FROM_UNIONIDstring來源方用戶 UnionID
// 示例const cloud = require('wx-server-sdk')cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV,})exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()

  // 跨賬號調用時,由此拿到來源方小程序/公眾號 AppID
  console.log(wxContext.FROM_APPID)
  // 跨賬號調用時,由此拿到來源方小程序/公眾號的用戶 OpenID
  console.log(wxContext.FROM_OPENID)
  // 跨賬號調用、且滿足 unionid 獲取條件時,由此拿到同主體下的用戶 UnionID
  console.log(wxContext.FROM_UNIONID)

  return wxContext}

4. 云調用:調用公眾號服務端接口

在(zai)公眾號(hao)網頁中發(fa)起云(yun)函(han)數調(diao)用(yong)時,在(zai)云(yun)函(han)數中可(ke)以免鑒權調(diao)用(yong)公眾號(hao)的服務(wu)端(duan)接口,示例:

const cloud = require('wx-server-sdk')cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV,})// ...exports.main = async (event) => {
  // 示例:創建標簽 //developers.weixin.qq.com/doc/offiaccount/User_Management/User_Tag_Management.html
  return cloud.openapi({ appid: '公眾號 AppID' }).officialAccount.tags.create({ 
    tag: { 
      name: 'xxx'
    }
  })}

已(yi)支(zhi)持(chi)絕大部分(fen)接(jie)口,詳細 API 列表(biao)見[支(zhi)持(chi)的(de)服務端接(jie)口列表(biao)],如有缺失,請在微信開放社(she)區反饋(kui)。

實際(ji)操作可參考公眾號網頁使用云開發的極(ji)簡示(shi)例

步驟五:登錄云開發控制查看云開發資源

首先,需要到公眾號后臺為登錄用戶授權開發者工具權限:

1.05.2103192 或以上版本的開發者工具已支持公眾號網頁登錄云開發控制臺,前往微信開發者工具-公眾號網頁項目-公眾號網頁,點擊“云開發”,填入公眾號AppID即可進入授權環境共享的微信云開發資源中;




在公眾號中使用云開發 希望這篇文章對您有幫助.

上(shang)海西(xi)陸(lu)信息科技有限公司 承接各(ge)類(lei)微信小(xiao)(xiao)程序開(kai)發制作、小(xiao)(xiao)程序定制、APP 網站(zhan) 開(kai)發制作,聯系電話 18221533805、15900430334

為您推薦

DeepSeek具體是什么(me)

DeepSeek是什么,DeepSeek具體應該怎么使用,DeepSeek有哪些作用

模(mo)版和定制開發的區別?

心理傾聽咨詢系統

如果您這邊也想開發一個心理咨詢系統具備哪些功能模塊呢?

旅游小程序app開(kai)發

微信旅游小程序開發,包含旅游景點展示、用戶在線預約、在線支付、景點核銷、會員管理系統等功能。

醫美行業方案報價

注冊登錄注冊登錄微信授權自動獲取用戶頭像、昵稱、手機號,并創建會員,下次進入自動登錄首頁布局1、ba...

多商戶電商系統哪些功(gong)能(neng)呢?

app/小程序運用具體有哪些支付途徑呢?1、在線支付:支持微信支付、支付寶支付、銀聯支付、銀行卡打款...

服裝定制類小程序開發

1,首頁顯示總交易金額,總交易訂單次數1.1對于需求方可看到自己發布的需求列表1.2對于接包方首先顯...

微信(xin)教育小程序app開發,教育系(xi)統(tong)有(you)哪些(xie)功能

微信教育小程序有哪些功能?下面給大家介紹下西陸教育系統功能清單一、用戶劃分1,普通用戶:可觀看免費課...

微信回收小程序開發(fa)公司、回收系統開發(fa)需求價格

分類功能模塊功能模塊功能描述策劃與設計界面設計需求溝通需求溝通UI設計前端設計反饋修改根據客戶的反饋...

微信(xin)黨建(jian)小(xiao)程(cheng)序(xu)開(kai)發(fa)需求、黨建(jian)小(xiao)程(cheng)序(xu)功能清單

分類功能模塊功能模塊功能描述策劃與設計界面設計需求溝通需求溝通UI設計前端設計反饋修改根據客戶的反饋...

美容會所(suo)小程(cheng)序(xu)APP開(kai)發方案(an)報價(jia),醫美小程(cheng)序(xu)需求

分類功能模塊功能模塊功能描述策劃與設計界面設計需求溝通需求溝通UI設計前端設計反饋修改根據客戶的反饋...

定制小(xiao)程序 | 招聘小(xiao)程序開發

求職者正在尋找公司,公司也在尋找求職者,而招聘小程序的開發是一種幫助公司與求職者溝通的招聘渠道,企業...

微信小程序開發(fa)需要多長時間

如今,小項目的發展越來越受歡迎,所以越來越多的企業和企業表示要開發自己的小項目。在開發前的溝通階段,...

小程序定(ding)制開發時間要多(duo)久(jiu)?

很多人問我小程序定制開發需要多長時間?這個問題真的很難回答。我只能告訴你,根據項目開發一個小程序大約...

售貨機(ji)小程序APP功(gong)能(neng)清單,售貨機(ji)系統有哪些功(gong)能(neng)列表

售貨機小程序APP包含哪些基礎功能,一下西陸科技小編給大家總結下售貨機小程序基礎功能。 ...

上海小程序開發公司

上海徐匯哪里有靠譜的小程序開發公司?開發小程序你嘚先了解現在開發小程序的途徑有模板和定制開發模板和定...

微信美(mei)容美(mei)發(fa)小程(cheng)序(xu)開發(fa)需要(yao)多(duo)少錢

美容行業是典型的O2O行業,因此從網上到線下推廣的聯系對美容院來說是個問題。在應用小程序之前,美容院...

抖音小程序開發

抖音在這幾年時間里成為了一款很火爆APP,隨著抖音的火爆,抖音也開始慢慢模仿微信,百度,支付寶那樣推...

情侶攢錢app

情侶攢錢APP功能:快速記賬:極簡的操作流程,消費趨勢:一目了然的圖表,幫你快速分析消費情況數據安全...

家(jia)政服務預(yu)約(yue)小程(cheng)序開發(fa)

很多人會問家政服務預約小程序APP怎么做,想要做一個家政系統,首先我們得了解家政軟件包含哪些功能。家...