小程序插件用户信息功能页调试问题的解决

事情起源于《合成海报的小程序插件》《小程序插件数据统计》,想着在票圈海报的数据统计中,加入 openid 信息做为用户唯一标识,统计回访情况。本以为和小程序获取 openid 一样,静默授权即可。结果发现插件获取用户信息,比小程序中严格的多,openid 也需要显式的用户授权。用户信息授权用到了插件功能页,遇到了一些困难,记录一下。

小程序插件功能页的用途,官网有详细介绍,这里不赘述。

现象

用微信开发者工具导入官方的代码片段,只是修改了appid,其他无任何修改。

手机调试的时候无任何反应。

根本原因

插件所有者小程序 的功能页特性未激活。具体来说,在插件所有者小程序的 app.json 文件中添加 functionalPages 定义段,并令其值为 true ,例如:

1
2
3
4
5
{
"functionalPages": {
"independent": true
}
}

其中最重要而容易遗漏的步骤,是先切换到“小程序模式“(下图),再激活功能页特性。一开始就是因为没有厘清 小程序插件 ,和 插件所有者小程序 两个概念,绕了些弯路。

切换小程序模式

具体步骤

  • 微信开发工具打开项目后,先将插件模式切换到 小程序模式 ,这时控制台会有报错,将 miniprogram 目录下 app.json 文件中,plugins.myPlugin.verion 的值改为 latest ,报错消失;

添加 functionalPages 定义段

  • 添加 functionalPages 定义段,并令其值为 true ,例如:

    1
    2
    3
    4
    5
    {
    "functionalPages": {
    "independent": true
    }
    }
  • 然后点微信开发者工具中的“预览”上传一次代码到开发环境,扫码访问。 这样功能页就打包到开发版小程序中了;

  • 切换回 插件模式,在开发者工具上打开插件项目,将插件中 functional-page-navigator 中的 version 属性设置为 develop, app.json 文件中,plugins.myPlugin.verion 的值改回 dev

  • 点击预览可以生成插件预览二维码,用测试用的真机扫码即可预览功能页;如果更改了插件代码,重新生成并扫描插件的预览二维码即可;

  • 如果过了一段时间之后,跳转功能页时出现“开发版已过期”这样的提示,从第1步开始重试一次

一句话总结

其实就是要理解,插件功能页是打包到 插件所有者小程序 中并发布的(通过 "functionalPages": true 申明)。可以把插件模式下的宿主小程序,当作第三方小程序,用户触发授权的时候,跳转到 插件所有者小程序 的插件功能页,在上面确认授权。

添加 functionalPages 定义段

分享到:

评论完整模式加载中...如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理