一图总览

大家可以先看看下面的流程图,来了解笔者想实现的功能,简单来说就是两个不同主体间的小程序与公众号该如何产生关联。

注:为什么这里要强调不同主体呢,因为同主体的小程序与公众号是可以通过unionId来进行关联绑定。

实现方案

小程序web-view组件

web-view组件官方文档

<web-view src="{{webviewUrl}}" />
Page({data: {// 公众号H5页面webviewUrl: '../../companyA/index.html',},onLoad() {wx.showLoading({title: '加载中'});},
});

H5中进行公众号静默授权

公众号网页授权官方文档

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>H5 - LoginPage</title><script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
</head>
<body><script> // 公众号AppIdconst appid = '';// 处理链接参数示例const queryToObject = (str) => {if (<img src="https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${redirectUrl}&response_type=code&scope=${scope}&state=AUTH#wechat_redirect`;window.location.replace(wxAuthUrl);}doLogin(); </script" style="margin: auto" />
</body>
</html>

利用web-view组件的bindmessage属性接收H5传输的数据

web-view组件官方文档

<web-viewsrc="{{webviewUrl}}"bindmessage="handleMessage"
>
</web-view>Page({data: {// 公众号H5页面webviewUrl: '../../companyA/index.html',},onLoad() {wx.showLoading({title: '加载中'});},handleMessage(e) {if (e.detail.data) {e.detail.data.forEach(d => {const { action, data, from } = dif (action === 'postData') {// 这里处理方式有很多很多种,大家可以视业务情况而定}})}}
});

小程序和内嵌的H5是无法自由通信的,一定需要通过H5的postMessage来进行数据传递,postMessage具体的使用限制在上面H5部分有详细介绍,这里就不赘述了。

在小程序侧则是通过bindmessage来接收H5抛出的信息,双方的交互过程有很多种处理方式,大家可以视业务情况自行处理,笔者这里简单列几个场景:

  • 在H5侧完成openId上报&绑定(需要在加载web-view前获取好小程序openId)
  • 在小程序侧完成openId上报&绑定
  • 在小程序侧接收H5信息并缓存,供其他页面使用

备忘录

web-view组件的使用限制

① 个人主体小程序无法使用该组件

② 该组件默认全屏覆盖(不支持cover组件覆盖、也不用想着限制其宽高),且不支持navigationStyle: custom配置

公众号运营者权限

如果需要在开发者工具进行调试静默授权,则需要在在相应的公众号后台配置运营者权限,否则将无法正常加载页面。

但是,在真机中预览开发版是可以完成静默授权的,所以是否需要配置运营者权限也是可选项,大家可以视申请配置的复杂程度而定。

明确体验缺陷

在开发之前一定要与产品侧或者客户明确该方案的体验缺陷。用户在这种方案下的等待时长肯定是偏长于页面加载平均值的,至少需要过两次空白页才能真正的重定向到目标页面。

redirectTo > navigateBack

另外再记录一个小细节,大多数情况下,redirectTo的表现都会比navigateBack好,除非这个授权页面是在业务中途打开的。

最后

整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析。

有需要的小伙伴,可以点击文末卡片领取这份文档,无偿分享

部分文档展示:



文章篇幅有限,后面的内容就不一一展示了

有需要的小伙伴,可以点下方卡片免费领取

【小程序】微信小程序如何获取微信公众号openid?相关推荐

  1. 微信小程序通过web-view网页授权获取用户公众号OpenID

    小程序中实现网页授权获取微信公众号OpenID 1.准备工作 2.应用场景说明 3.实现步骤 结语 1.准备工作 第一步: 通过该地址https://mp.weixin.qq.com/debug/cg ...

  2. java获取openid_JAVA获取微信小程序openid和获取公众号openid,以及通过openid获取用户信息...

    https://www.cnblogs.com/lxwt/p/10154540.html?tdsourcetag=s_pcqq_aiomsg 一,首先说明下这个微信的openid 为了识别用户,每个用 ...

  3. uniapp - 编译微信小程序项目的微信授权登录、获取微信手机号登录、最新版微信直接登录、手机与验证码登录的示例源码(适用于 uniapp 微信小程序项目,源代码直接开箱即用)超级详细的代码及注释

    效果图 uniapp 项目编译微信小程序,一些常见的登录方式及源代码,示例代码干净整洁无BUG拿来即用. 本文示例实现了 uniapp 微信小程序项目的登录功能,包含微信授权登录.获取微信手机号登录. ...

  4. 微信小程序下获取公众号openId

    微信小程序下获取公众号openId 一.为什么我们需要在小程序下面获取公众号的openId呢? 微信公众号和微信小程序我们一般都会开发,有一种场景我们经常会遇到,公众号的消息推送以较成熟,我们希望把小 ...

  5. 微信小程序获取其从属关联公众号openid的思路

    间隔很长时间之后的第一篇博客 最近做的关于微信公众号和小程序的项目比较多,这里先写一下如何通过微信公众号关联的小程序的openid获取其微信公众号的openid,以完成推送消息模板之类的操作,相反操作 ...

  6. 微信小程序中判断用户是否已关注公众号的两种实现

    背景: 最近的一个小程序项目中有这么一个需求:进入我的主页后, 如果用户没有关注过我们的公众号, 则展示一个引导关注公众号组件, 点击后跳转到一篇公众号文章, 指引用户进行关注,用户完成关注隐藏该组件 ...

  7. 微信小程序开发之组件official-account(配置公众号关注组件)

    official-account 基础库 2.3.0 开始支持 作用:公众号关注组件.当用户扫小程序码打开小程序时,开发者可在小程序内配置公众号关注组件,方便用户快捷关注公众号,可嵌套在原生组件内. ...

  8. 通过小程序获取公众号openid

    需求: 由于小程序不能直接向用户发送模板消息,所以需要用公众号向用户发送模板消息. 于是需要将小程序的openid和公众号的openid绑定在一起.提供两种思路: 方法一: 1.微信小程序和公众号都绑 ...

  9. 如何获取微信公众号openid

    方法一:用户主动授权 1. 在公众号中添加网页授权的域名(在公众号设置中配置): 2. 引导用户点击相关链接或按钮: 3. 用户点击后,会跳转到你配置的网页: 4. 你可以通过微信网页授权接口获取到用 ...

  10. Spring学习笔记(二十三)——实现网站微信扫码登录获取微信用户信息Demo

    目录 微信扫码登录介绍 开发步骤 微信扫码登录示例 微信开放文档 遇到的问题 使用第三方工具实现网站微信扫码登录 开发前介绍 开发步骤 微信扫码登录获取微信用户信息Demo实现流程 实现效果 实现过程 ...

最新文章

  1. caffe 下一些参数的设置
  2. list在codeblocks和vs2013中编译提示不同
  3. GPU神经网络和JAVA神经网络速度对比
  4. 软考可以一次报两门吗
  5. android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件
  6. epplus保存为流_C# 使用EPPlus 秒导出10万条数据
  7. android xml 焦点,android TV 焦点选中放大效果
  8. 第0章 Oracle的安装及相关配置
  9. 大白菜U盘启动制作工具怎么用?
  10. android手机备份恢复出厂设置,安卓手机恢复出厂设置在哪里?史上最全版恢复过程详解...
  11. android 微信图片动画,一款仿微信图片加载,微博图片加载,视频加载时的进度view...
  12. 使用PreListener与InteractionListener的一个小发现
  13. 【Python脚本进阶】2.3、利用FTP与Web批量抓“ 肉机”(终)
  14. 简单理解Hadoop(Hadoop是什么、如何工作)
  15. Spring IOC详解 以及 Bean生命周期详细过程 可以硬刚面试官的文章
  16. 开区网站打开自动播放音乐的添加跟修改教程
  17. java 工具类命名_16种java工具类
  18. 紫薇斗数---第十二节、太阳星
  19. 雅思听力地图题常用词汇及技巧
  20. 柚子快报 APP 拼多多助力

热门文章

  1. uni-app中@tap和@click的区别
  2. 【论文翻译】【剪枝】Filter Pruning via Geometric Medianfor Deep Convolutional Neural Networks Acceleration
  3. 还不错的毕业设计源码+校园信息发布程序
  4. 前昆仑游戏CEO陈芳出任游族网络联席总裁 周亚辉送祝福
  5. VC操作excel表格
  6. 基于SSM的宠物管理系统
  7. 插上随身wifi没有显示无服务器,上网无需插卡,这种随身WiFi解决方案才厉害!
  8. cdh6.3.2安装
  9. 服装企业必须迈入SCM供应链管理
  10. ST-LINK/V2 + STM8 + STVP 下载程序+Error on Option Bytes