W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
開發(fā)插件前,請發(fā)郵件至 qq-miniprogram@tencent.com
申請插件開發(fā)權(quán)限,郵件內(nèi)容包括:
【標題】QQ小程序插件開發(fā)申請
【內(nèi)容】
插件名稱:
Appid:
插件用途:
開發(fā)小程序插件需要一個appid,申請步驟同小程序一致,添加項目的步驟也與小程序一致。 小程序插件目錄一般包括以下三個:
一個插件可以包含若干個自定義組件、頁面,和一組 js 接口。插件的目錄內(nèi)容如下:
plugin
├── components
│ ├── hello-component.js // 插件提供的自定義組件(可以有多個)
│ ├── hello-component.json
│ ├── hello-component.wxml
│ └── hello-component.wxss
├── pages
│ ├── hello-page.js // 插件提供的頁面(可以有多個)
│ ├── hello-page.json
│ ├── hello-page.wxml
│ └── hello-page.wxss
├── index.js // 插件的 js 接口
└── plugin.json // 插件配置文件
插件配置文件
向第三方小程序開放的所有自定義組件、頁面和 js 接口都必須在插件配置文件 plugin.json 列出,格式如下:
{
"publicComponents": {
"hello-component": "components/hello-component"
},
"pages": {
"hello-page": "pages/hello-page"
},
"main": "index.js"
}
這個配置文件將向第三方小程序開放一個自定義組件 hello-component
,一個頁面 hello-page
和 index.js
下導(dǎo)出的所有 js 接口。
請注意:在插件開發(fā)中,只有部分接口可以直接調(diào)用。
插件可以定義若干個自定義組件,這些自定義組件都可以在插件內(nèi)相互引用。但提供給第三方小程序使用的自定義組件必須在配置文件的 publicComponents 段中列出(參考上文)。
除去接口限制以外,自定義組件的編寫和組織方式與一般的自定義組件相同,每個自定義組件由 wxml, wxss, js 和 json 四個文件組成。具體可以參考自定義組件的文檔。
頁面 插件可以定義若干個插件頁面,可以從本插件的自定義組件、其他頁面中跳轉(zhuǎn),或從第三方小程序中跳轉(zhuǎn)。所有頁面必須在配置文件的 pages 段中列出(參考上文)。 除去接口限制以外,插件的頁面編寫和組織方式與一般的頁面相同,每個頁面由 wxml, wxss, js 和 json 四個文件組成。具體可以參考其他關(guān)于頁面的文檔。 插件執(zhí)行頁面跳轉(zhuǎn)的時候,可以使用 navigator 組件。當插件跳轉(zhuǎn)到自身頁面時, url 應(yīng)設(shè)置為這樣的形式:plugin-private://PLUGIN_APPID/PATH/TO/PAGE。需要跳轉(zhuǎn)到其他插件時,也可以這樣設(shè)置 url 。
<navigator url="plugin-private://qqidxxxxxxxxxxxxxx/pages/hello-page">
Go to pages/hello-page!
</navigator>
在插件自身的頁面中,插件還可以調(diào)用 qq.navigateTo 來進行頁面跳轉(zhuǎn), url 格式與使用 navigator 組件時相仿。
插件可以在接口文件(在配置文件中指定,詳情見上文)中 export 一些 js 接口,供插件的使用者調(diào)用,如:
module.exports = {
hello: function() {
console.log('Hello plugin!')
}
}
插件可以像小程序一樣預(yù)覽和上傳,但插件沒有體驗版。
插件會同時有多個線上版本,由使用插件的小程序決定具體使用的版本號。
手機預(yù)覽和提審插件時,會使用一個特殊的小程序來套用項目中 miniprogram
文件夾下的小程序,從而預(yù)覽插件。
在第三方小程序使用插件時,插件代碼并不可見。因此,除了插件代碼,我們還支持插件開發(fā)者上傳一份插件開發(fā)文檔。這份開發(fā)文檔將展示在插件詳情頁,供其他開發(fā)者在瀏覽插件和使用插件時進行閱讀和參考。插件開發(fā)者應(yīng)在插件開發(fā)文檔中對插件提供的自定義組件、頁面、接口等進行必要的描述和解釋,方便第三方小程序正確使用插件。 插件開發(fā)文檔必須放置在插件項目根目錄中的 doc 目錄下,目錄結(jié)構(gòu)如下
doc
├── README.md // 插件文檔,應(yīng)為 markdown 格式
編輯 README.md
之后,可以使用開發(fā)者工具打開 README.md,并在編輯器的右下角預(yù)覽插件文檔和單獨上傳插件文檔。上傳文檔后,立刻發(fā)布。
插件不能直接引用其他插件。但如果小程序引用了多個插件,插件之間是可以互相調(diào)用的。 一個插件調(diào)用另一個插件的方法,與插件調(diào)用自身的方法類似??梢允褂?plugin-private://APPID 訪問插件的自定義組件、頁面(暫不能使用 plugin:// )。對于 js 接口,可使用 requirePlugin 。
插件在使用 qq.request 等 API 發(fā)送網(wǎng)絡(luò)請求時,將會額外攜帶一個簽名 HostSign ,用于驗證請求來源于小程序插件。這個簽名位于請求頭中,形如:
X-WECHAT-HOSTSIGN: {"noncestr":"NONCESTR", "timestamp":"TIMESTAMP", "signature":"SIGNATURE"}
其中,NONCESTR
是一個隨機字符串,TIMESTAMP
是生成這個隨機字符串和 SIGNATURE
的 UNIX
時間戳。它們是用于計算簽名 SIGNATRUE
的參數(shù),簽名算法為:
SIGNATURE = sha1([APPID, NONCESTR, TIMESTAMP, TOKEN].sort().join(''))
其中,APPID 是 所在小程序 的 AppId(可以從請求頭的 referrer 中獲得);TOKEN 是插件 Token,可以在小程序插件基本設(shè)置中找到。
網(wǎng)絡(luò)請求的 referer 格式固定為 https://appservice.qq.com/{appid}/{version}/page-frame.html
,其中 {appid} 為小程序的 appid,{version} 為小程序的版本號,版本號為 0 表示為開發(fā)版、體驗版以及審核版本,版本號為 devtools 表示為開發(fā)者工具,其余為正式版本。
插件開發(fā)者可以在服務(wù)器上按以下步驟校驗簽名:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: