美文网首页
梳理小程序知识(六)

梳理小程序知识(六)

作者: chulijun | 来源:发表于2019-09-25 14:16 被阅读0次

插件从小程序基础库版本 2.1.0 开始支持页面。插件可以定义若干个插件页面,可以从本插件的自定义组件、其他页面中跳转,或从第三方小程序中跳转。其中,提供给第三方小程序跳转的页面必须在配置文件中列出(参考上文)。

除去接口限制以外,插件的页面编写和组织方式与一般的页面相同,每个页面由 wxml, wxss, jsjson 四个文件组成。具体可以参考其他关于页面的文档。

插件执行页面跳转的时候,可以使用 navigator 组件。当插件跳转到自身页面时, url 应设置为这样的形式:plugin-private://PLUGIN_APPID/PATH/TO/PAGE 。需要跳转到其他插件时,也可以这样设置 url

代码示例:
<navigator url="plugin-private://wxidxxxxxxxxxxxxxx/pages/hello-page">
Go to pages/hello-page!
</navigator>

自基础库版本 2.2.2 开始,在插件自身的页面中,插件还可以调用 wx.navigateTo 来进行页面跳转, url 格式与使用 navigator 组件时相仿。

接口

插件可以在接口文件(在配置文件中指定,详情见上文)中 export 一些 js 接口,供插件的使用者调用,如:

代码示例:

屏幕快照 2019-09-02 下午4.31.08.png

预览、上传和发布

插件可以像小程序一样预览和上传,但插件没有体验版。

插件会同时有多个线上版本,由使用插件的小程序决定具体使用的版本号。

手机预览和提审插件时,会使用一个特殊的小程序来套用项目中 miniprogram 文件夹下的小程序,从而预览插件。

  • (建议的方式)如果当前开发者有测试号,则会使用这个测试号;在测试号的设置页中可以看到测试号的 appidappsecret 并设置域名列表。
  • 否则,将使用“插件开发助手”,它具有一个特定的 appid

插件间互相调用

插件不能直接引用其他插件。但如果小程序引用了多个插件,插件之间是可以互相调用的。

一个插件调用另一个插件的方法,与插件调用自身的方法类似。可以使用 plugin-private://APPID 访问插件的自定义组件、页面(暂不能使用 plugin:// )。对于 js 接口,可使用 requirePlugin

插件请求签名

插件在使用 wx.request 等 API 发送网络请求时,将会额外携带一个签名 HostSign ,用于验证请求来源于小程序插件。这个签名位于请求头中,形如:

其中, NONCESTR 是一个随机字符串, TIMESTAMP 是生成这个随机字符串和 SIGNATURE 的 UNIX 时间戳。它们是用于计算签名 SIGNATRUE 的参数,签名算法为:
SIGNATURE = sha1([APPID, NONCESTR, TIMESTAMP, TOKEN].sort().join(''))
其中,APPID所在小程序 的 AppId (可以从请求头的 referrer 中获得);TOKEN 是插件 Token,可以在小程序插件基本设置中找到。

网络请求的 referer 格式固定为 https://servicewechat.com/{appid}/{version}/page-frame.html,其中 {appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版、体验版以及审核版本,版本号为 devtools 表示为开发者工具,其余为正式版本。

插件开发者可以在服务器上按以下步骤校验签名:

  1. sortAPPID NONCESTR TIMESTAMP TOKEN 四个值表示成字符串形式,按照字典序排序(同 JavaScript 数组的 sort 方法);
  2. join 将排好序的四个字符串直接连接在一起;
  3. 对连接结果使用 sha1 算法,其结果即 SIGNATURE

自基础库版本 2.0.7 开始,在小程序运行期间,若网络状况正常, NONCESTRTIMESTAMP 会每 10 分钟变更一次。如有必要,可以通过判断 TIMESTAMP 来确定当前签名是否依旧有效。

相关文章

  • 梳理小程序知识(六)

    插件从小程序基础库版本 2.1.0 开始支持页面。插件可以定义若干个插件页面,可以从本插件的自定义组件、其他页面中...

  • 梳理小程序知识(三)

    事件的捕获阶段 自基础库版本 1.5.0 起,触摸类事件支持捕获阶段。捕获阶段位于冒泡阶段之前,且在捕获阶段中,事...

  • 梳理小程序知识(七)

    使用插件 添加插件 在使用插件前,首先要在小程序管理后台的“设置-第三方服务-插件管理”中添加插件。开发者可登录小...

  • 梳理小程序知识(一)

    最近比较空闲,想着把之前学习小程序的知识点 和遇到的问题梳理一下,作为备份,也作为分享给大家学习小程序的一个资料。...

  • 梳理小程序知识(二)

    注册账号:...https://mp.weixin.qq.com/wxopen/waregister?action...

  • 梳理小程序知识(四)

    小程序运行机制 前台/后台状态 小程序启动后,界面被展示给用户,此时小程序处于前台状态。 当用户点击右上角胶囊按钮...

  • 梳理小程序知识(五)

    关于小程序的更新机制 未启动时更新 开发者在管理后台发布新版本的小程序之后,如果某个用户本地有小程序的历史版本,此...

  • 梳理小程序知识(八)-网络

    网络 1. 服务器域名配置 每个微信小程序需要事先设置通讯域名,小程序只可以跟指定的域名与进行网络通信。包括普通 ...

  • 梳理小程序知识(九)-优化

    setData setData 是小程序开发中使用最频繁的接口,也是最容易引发性能问题的接口。在介绍常见的错误用法...

  • 浅谈微信小程序

    前言 太多时间遇到微信小程序的渗透测试,而自身就对其不甚了解,借此梳理微信小程序的一些知识点。 开发流程 小程序可...

网友评论

      本文标题:梳理小程序知识(六)

      本文链接:https://www.haomeiwen.com/subject/ljbnsctx.html