【小程序】微信小程序如何获取微信公众号openid?
一图总览
大家可以先看看下面的流程图,来了解笔者想实现的功能,简单来说就是两个不同主体间的小程序与公众号该如何产生关联。
注:为什么这里要强调不同主体呢,因为同主体的小程序与公众号是可以通过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?相关推荐
- 微信小程序通过web-view网页授权获取用户公众号OpenID
小程序中实现网页授权获取微信公众号OpenID 1.准备工作 2.应用场景说明 3.实现步骤 结语 1.准备工作 第一步: 通过该地址https://mp.weixin.qq.com/debug/cg ...
- java获取openid_JAVA获取微信小程序openid和获取公众号openid,以及通过openid获取用户信息...
https://www.cnblogs.com/lxwt/p/10154540.html?tdsourcetag=s_pcqq_aiomsg 一,首先说明下这个微信的openid 为了识别用户,每个用 ...
- uniapp - 编译微信小程序项目的微信授权登录、获取微信手机号登录、最新版微信直接登录、手机与验证码登录的示例源码(适用于 uniapp 微信小程序项目,源代码直接开箱即用)超级详细的代码及注释
效果图 uniapp 项目编译微信小程序,一些常见的登录方式及源代码,示例代码干净整洁无BUG拿来即用. 本文示例实现了 uniapp 微信小程序项目的登录功能,包含微信授权登录.获取微信手机号登录. ...
- 微信小程序下获取公众号openId
微信小程序下获取公众号openId 一.为什么我们需要在小程序下面获取公众号的openId呢? 微信公众号和微信小程序我们一般都会开发,有一种场景我们经常会遇到,公众号的消息推送以较成熟,我们希望把小 ...
- 微信小程序获取其从属关联公众号openid的思路
间隔很长时间之后的第一篇博客 最近做的关于微信公众号和小程序的项目比较多,这里先写一下如何通过微信公众号关联的小程序的openid获取其微信公众号的openid,以完成推送消息模板之类的操作,相反操作 ...
- 微信小程序中判断用户是否已关注公众号的两种实现
背景: 最近的一个小程序项目中有这么一个需求:进入我的主页后, 如果用户没有关注过我们的公众号, 则展示一个引导关注公众号组件, 点击后跳转到一篇公众号文章, 指引用户进行关注,用户完成关注隐藏该组件 ...
- 微信小程序开发之组件official-account(配置公众号关注组件)
official-account 基础库 2.3.0 开始支持 作用:公众号关注组件.当用户扫小程序码打开小程序时,开发者可在小程序内配置公众号关注组件,方便用户快捷关注公众号,可嵌套在原生组件内. ...
- 通过小程序获取公众号openid
需求: 由于小程序不能直接向用户发送模板消息,所以需要用公众号向用户发送模板消息. 于是需要将小程序的openid和公众号的openid绑定在一起.提供两种思路: 方法一: 1.微信小程序和公众号都绑 ...
- 如何获取微信公众号openid
方法一:用户主动授权 1. 在公众号中添加网页授权的域名(在公众号设置中配置): 2. 引导用户点击相关链接或按钮: 3. 用户点击后,会跳转到你配置的网页: 4. 你可以通过微信网页授权接口获取到用 ...
- Spring学习笔记(二十三)——实现网站微信扫码登录获取微信用户信息Demo
目录 微信扫码登录介绍 开发步骤 微信扫码登录示例 微信开放文档 遇到的问题 使用第三方工具实现网站微信扫码登录 开发前介绍 开发步骤 微信扫码登录获取微信用户信息Demo实现流程 实现效果 实现过程 ...
最新文章
- caffe 下一些参数的设置
- list在codeblocks和vs2013中编译提示不同
- GPU神经网络和JAVA神经网络速度对比
- 软考可以一次报两门吗
- android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件
- epplus保存为流_C# 使用EPPlus 秒导出10万条数据
- android xml 焦点,android TV 焦点选中放大效果
- 第0章 Oracle的安装及相关配置
- 大白菜U盘启动制作工具怎么用?
- android手机备份恢复出厂设置,安卓手机恢复出厂设置在哪里?史上最全版恢复过程详解...
- android 微信图片动画,一款仿微信图片加载,微博图片加载,视频加载时的进度view...
- 使用PreListener与InteractionListener的一个小发现
- 【Python脚本进阶】2.3、利用FTP与Web批量抓“ 肉机”(终)
- 简单理解Hadoop(Hadoop是什么、如何工作)
- Spring IOC详解 以及 Bean生命周期详细过程 可以硬刚面试官的文章
- 开区网站打开自动播放音乐的添加跟修改教程
- java 工具类命名_16种java工具类
- 紫薇斗数---第十二节、太阳星
- 雅思听力地图题常用词汇及技巧
- 柚子快报 APP 拼多多助力
热门文章
- uni-app中@tap和@click的区别
- 【论文翻译】【剪枝】Filter Pruning via Geometric Medianfor Deep Convolutional Neural Networks Acceleration
- 还不错的毕业设计源码+校园信息发布程序
- 前昆仑游戏CEO陈芳出任游族网络联席总裁 周亚辉送祝福
- VC操作excel表格
- 基于SSM的宠物管理系统
- 插上随身wifi没有显示无服务器,上网无需插卡,这种随身WiFi解决方案才厉害!
- cdh6.3.2安装
- 服装企业必须迈入SCM供应链管理
- ST-LINK/V2 + STM8 + STVP 下载程序+Error on Option Bytes