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

      在公眾號中使用云開發(fā)

      2022-05-08

      在公眾號中使用云開發(fā)

      微信云開發(fā)已支持在Web 網(wǎng)頁中使用環(huán)境共享,即一個小程序的云開發(fā)資源可以授權(quán)共享給同主體下多個公眾號(或公眾號授權(quán)的web網(wǎng)頁)使用。

      同一主體下的某個已開通云開發(fā)的小程序授權(quán)共享環(huán)境給該公眾號后,在該公眾號網(wǎng)頁中,則可以通過云開發(fā) Web SDK 的接口發(fā)起登錄(內(nèi)部會進(jìn)行公眾號網(wǎng)頁授權(quán)),登錄后可以在云函數(shù)中獲取用戶信息、及使用公眾號的服務(wù)端接口。如果網(wǎng)頁沒有綁定公眾號或者不需要微信登錄態(tài),也可以直接使用 Web 未登錄模式訪問云開發(fā)資源。

      注意:Web SDK 使用公眾號登錄態(tài),需要使用靜態(tài)網(wǎng)站托管綁定的默認(rèn)域名或自定義域名(因自 iOS 14 起封禁第三方 cookie,在 Web SDK 中使用靜態(tài)托管域名私有鏈路訪問微信服務(wù)來保障安全及使用第一方 cookie),參考 第三方 Cookie 限制說明

      在微信客戶端內(nèi)打開的 Web 網(wǎng)頁可以進(jìn)行公眾號網(wǎng)頁授權(quán)并且有登錄態(tài)的安全訪問云開發(fā)資源。有以下步驟:

      1. 需要一個有網(wǎng)頁授權(quán)權(quán)限的公眾號 A、及一個同主體的已開通云開發(fā)的小程序 B

      2. 小程序 B 在云開發(fā)控制臺中通過 “環(huán)境共享” 能力,將一個或多個環(huán)境授權(quán)共享給公眾號 A 使用

      3. 公眾號 A 的網(wǎng)頁在微信客戶端內(nèi)使用云開發(fā) Web SDK 登錄,即可正常訪問小程序 A 已授權(quán)共享的云開發(fā)環(huán)境資源

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

      步驟一:準(zhǔn)備公眾號與小程序

      公眾號準(zhǔn)備:

      1. 公眾號需有使用網(wǎng)頁授權(quán)的權(quán)限

      2. 配置好網(wǎng)頁授權(quán)的回調(diào)域名

      3. 配置好 JS 安全域名

      小程序準(zhǔn)備:

      1. 開通云開發(fā)

      2. 前往云開發(fā)控制臺-更多-環(huán)境共享,開通環(huán)境共享

      步驟二:小程序?qū)h(huán)境共享給公眾號使用

      如果公眾號 A 和小程序 B 同主體,則小程序 B 可以在 1.03.2009140 或以上版本的開發(fā)者工具云開發(fā)控制臺的 “環(huán)境共享” 中,將其一個或多個環(huán)境的全部或部分資源能力授權(quán)給公眾號使用。授權(quán)完成后,公眾號網(wǎng)頁可以訪問小程序 B 的云開發(fā)資源的已授權(quán)部分。

      步驟三:網(wǎng)頁登錄

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

      1. 云開發(fā)登錄:調(diào)用 checkLogin 檢查網(wǎng)頁云開發(fā)登錄狀態(tài),如果未登錄則調(diào)用 startLogin 發(fā)起調(diào)用,發(fā)起完成后重復(fù)該步驟;如果已登錄則進(jìn)行下一步

      2. 獲取對應(yīng)小程序的訪問授權(quán):在代碼中使用一個小程序的一個環(huán)境的資源時,需初始化并獲取對方的授權(quán),示例代碼如下:

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

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

      const cloud = require('wx-server-sdk')cloud.init({
        env: cloud.DYNAMIC_CURRENT_ENV})// 云函數(shù)入口函數(shù)exports.main = async (event, context) => {
        const wxContext = cloud.getWXContext()
      
        console.log(event)
        console.log(wxContext)
        // 跨賬號調(diào)用時,由此拿到來源方小程序/公眾號 AppID
        console.log(wxContext.FROM_APPID)
        // 跨賬號調(diào)用時,由此拿到來源方小程序/公眾號的用戶 OpenID
        console.log(wxContext.FROM_OPENID)
        // 跨賬號調(diào)用、且滿足 unionid 獲取條件時,由此拿到同主體下的用戶 UnionID
        console.log(wxContext.FROM_UNIONID)
      
        return {
          errCode: 0,
          errMsg: '',
          auth: JSON.stringify({
            // 自定義安全規(guī)則
            // 在前端訪問資源方數(shù)據(jù)庫、云函數(shù)等資源時,資源方可以通過
            // 安全規(guī)則的 `auth.custom` 字段獲取此對象的內(nèi)容做校驗,
            // 像這個示例就是資源方可以在安全規(guī)則中通過 `auth.custom.x` 獲取
            x: 1,
          }),
        }}

      資源方 cloudbase_auth 云函數(shù)返回的對象結(jié)構(gòu)協(xié)議:

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

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

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

      登錄后,可以訪問獲得授權(quán)的小程序的云開發(fā)資源、使用公眾號 JSSDK、獲取公眾號用戶信息、發(fā)起公眾號云調(diào)用(免鑒權(quán)使用公眾號服務(wù)端接口)等。以下一一舉例說明。

      1. 使用公眾號 JSSDK

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

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

      2. 訪問微信云開發(fā)資源

      使用 Web SDK 完成云開發(fā)登錄后,想要訪問某個小程序的云開發(fā)資源時,需聲明相應(yīng)實(shí)例并等待初始化(對方授權(quán))完成,等待完成后即可以相同的 API 訪問所有云資源:

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

      3. 獲取公眾號用戶信息

      在公眾號網(wǎng)頁中發(fā)起云函數(shù)調(diào)用時,在云函數(shù)中可以通過 getWXContext 獲取得到公眾號的用戶信息和應(yīng)用信息,具體字段有:

      屬性類型說明
      FROM_APPIDstring來源方 AppID,即公眾號 AppID
      FROM_OPENIDstring來源方用戶 OpenID,即公眾號對應(yīng)的用戶 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()
      
        // 跨賬號調(diào)用時,由此拿到來源方小程序/公眾號 AppID
        console.log(wxContext.FROM_APPID)
        // 跨賬號調(diào)用時,由此拿到來源方小程序/公眾號的用戶 OpenID
        console.log(wxContext.FROM_OPENID)
        // 跨賬號調(diào)用、且滿足 unionid 獲取條件時,由此拿到同主體下的用戶 UnionID
        console.log(wxContext.FROM_UNIONID)
      
        return wxContext}

      4. 云調(diào)用:調(diào)用公眾號服務(wù)端接口

      在公眾號網(wǎng)頁中發(fā)起云函數(shù)調(diào)用時,在云函數(shù)中可以免鑒權(quán)調(diào)用公眾號的服務(wù)端接口,示例:

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

      已支持絕大部分接口,詳細(xì) API 列表見[支持的服務(wù)端接口列表],如有缺失,請在微信開放社區(qū)反饋。

      實(shí)際操作可參考公眾號網(wǎng)頁使用云開發(fā)的極簡示例

      步驟五:登錄云開發(fā)控制查看云開發(fā)資源

      首先,需要到公眾號后臺為登錄用戶授權(quán)開發(fā)者工具權(quán)限:

      1.05.2103192 或以上版本的開發(fā)者工具已支持公眾號網(wǎng)頁登錄云開發(fā)控制臺,前往微信開發(fā)者工具-公眾號網(wǎng)頁項目-公眾號網(wǎng)頁,點(diǎn)擊“云開發(fā)”,填入公眾號AppID即可進(jìn)入授權(quán)環(huán)境共享的微信云開發(fā)資源中;




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

      上海西陸信息科技有限公司 承接各類微信小程序開發(fā)制作、小程序定制、APP 網(wǎng)站 開發(fā)制作,聯(lián)系電話 18221533805、15900430334

      為您推薦

      DeepSeek具體是什么

      DeepSeek是什么,DeepSeek具體應(yīng)該怎么使用,DeepSeek有哪些作用

      模版和定制開發(fā)的區(qū)別?

      心理傾聽咨詢系統(tǒng)

      如果您這邊也想開發(fā)一個心理咨詢系統(tǒng)具備哪些功能模塊呢?

      旅游小程序app開發(fā)

      微信旅游小程序開發(fā),包含旅游景點(diǎn)展示、用戶在線預(yù)約、在線支付、景點(diǎn)核銷、會員管理系統(tǒng)等功能。

      醫(yī)美行業(yè)方案報價

      注冊登錄注冊登錄微信授權(quán)自動獲取用戶頭像、昵稱、手機(jī)號,并創(chuàng)建會員,下次進(jìn)入自動登錄首頁布局1、ba...

      多商戶電商系統(tǒng)哪些功能呢?

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

      服裝定制類小程序開發(fā)

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

      微信教育小程序app開發(fā),教育系統(tǒng)有哪些功能

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

      微信回收小程序開發(fā)公司、回收系統(tǒng)開發(fā)需求價格

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

      微信黨建小程序開發(fā)需求、黨建小程序功能清單

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

      美容會所小程序APP開發(fā)方案報價,醫(yī)美小程序需求

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

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

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

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

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

      小程序定制開發(fā)時間要多久?

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

      售貨機(jī)小程序APP功能清單,售貨機(jī)系統(tǒng)有哪些功能列表

      售貨機(jī)小程序APP包含哪些基礎(chǔ)功能,一下西陸科技小編給大家總結(jié)下售貨機(jī)小程序基礎(chǔ)功能。 ...

      上海小程序開發(fā)公司

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

      微信美容美發(fā)小程序開發(fā)需要多少錢

      美容行業(yè)是典型的O2O行業(yè),因此從網(wǎng)上到線下推廣的聯(lián)系對美容院來說是個問題。在應(yīng)用小程序之前,美容院...

      抖音小程序開發(fā)

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

      情侶攢錢app

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

      家政服務(wù)預(yù)約小程序開發(fā)

      很多人會問家政服務(wù)預(yù)約小程序APP怎么做,想要做一個家政系統(tǒng),首先我們得了解家政軟件包含哪些功能。家...
      主站蜘蛛池模板: 搜日本一区二区三区免费高清视频| 亚洲国产欧美日韩精品一区二区三区 | 国产精品高清一区二区人妖| 一色一伦一区二区三区| 免费无码AV一区二区| 中文乱码人妻系列一区二区| 久久久久久综合一区中文字幕| 免费无码一区二区| 久久精品黄AA片一区二区三区| 亚洲人成网站18禁止一区| 亚洲蜜芽在线精品一区| 国产成人精品无码一区二区三区 | 伊人久久大香线蕉AV一区二区| 久久婷婷色一区二区三区| 久久一区二区免费播放| 麻豆精品一区二区综合av| 四虎成人精品一区二区免费网站 | 国产主播在线一区| 亚洲一区二区三区日本久久九| 一区二区三区在线视频播放| 免费国产在线精品一区| 免费观看日本污污ww网站一区 | 99精品国产一区二区三区2021| 精品国产福利第一区二区三区| 亚洲片一区二区三区| 国产精品一区二区四区| 亚洲乱码一区二区三区国产精品 | 一区二区三区视频在线播放| 无码精品前田一区二区| 日本人真淫视频一区二区三区| 日韩一区二区a片免费观看| 欧美av色香蕉一区二区蜜桃小说 | 国产在线精品一区二区三区不卡| 国产激情无码一区二区三区| 肥臀熟女一区二区三区| 国产在线不卡一区二区三区| 国产精品一区二区久久不卡| 亚洲一区精品视频在线| 亚洲国产AV一区二区三区四区| 丰满爆乳无码一区二区三区| 国产亚洲综合一区二区三区 |