微信第三方平台开发重点概念流程梳理

news2024/11/18 17:35:55

标题

  • 微信开发的亿点点概念
  • 第三方平台代开发流程
    • 亿些概念
    • 开发流程
  • 代公众号使用JS SDK
    • 一些概念
    • 具体流程
    • 引用

微信开发的亿点点概念

AppID:AppID是不同类型的产品的账号ID,是账号的唯一标识符。例如公众号的AppID、小程序的AppID、开放平台的AppID、第三方平台的AppID、移动应用的AppID、网站应用的AppID、小商店的AppID等等。

openid:openid是微信用户在不同类型的产品的身份ID,微信用户访问公众号、小程序、移动应用、网站应用、小商店等都会有唯一的openid,但同一个微信用户访问不同的产品生成的openid也是不一样的。例如,对于不同公众号,同一用户的openid不同;同理,对于不同的小程序,同一用户的openid也是不同的

unionid:是微信用户在同一个开放平台下的产品的身份ID。
如果开发者拥有多个移动应用、网站应用、和公众账号(即公众号和小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台账号下的移动应用、网站应用和公众账号,用户的 UnionID 是唯一的。即,同一用户,对同一个微信开放平台下的不同应用,UnionID是相同的。

IP白名单

  • IP白名单是一项用于限制谁可以访问公众号后台服务器的安全措施。当你配置IP白名单时,只有指定的IP地址可以访问你的公众号后台服务器,其他IP地址将被拒绝。
  • IP白名单通常用于保护服务器端的接口和资源,确保只有受信任的服务器可以与公众号后台进行通信。
  • 配置IP白名单对服务器端接口的调用有重要作用,但对于网页端的前端开发和使用微信JS-SDK,IP白名单并不足够。

JS接口安全域名

  • JS接口安全域名是一项用于控制网页端(微信内置浏览器中的网页)访问微信JS-SDK的安全措施。
  • 当你在微信公众号后台配置JS接口安全域名时,你告诉微信哪些域名的网页可以安全地使用微信JS-SDK。只有在配置的安全域名下的网页才能够正常使用微信JS-SDK的功能。
  • 这是为了防止恶意网页或未经授权的网页访问敏感的微信功能,如分享、支付等。配置JS接口安全域名有助于确保只有受信任的网站可以使用微信JS-SDK功能。

总结:IP白名单用于服务器端接口的安全控制,而JS接口安全域名用于前端网页的安全控制,以防止恶意网页滥用微信JS-SDK的功能。配置这两个安全措施是为了提高公众号的安全性,但它们用于不同的方面,因此需要同时配置以全面确保安全,也可以理解为IP白名单主要用于管理后端服务器的访问,而JS接口安全域名主要用于管理前端网页(微信内置浏览器中的网页)对微信JS-SDK的访问。这两个安全措施分别控制前端和后端的访问权限,以确保公众号的安全性。前端网页可以通过JS接口安全域名配置来限制哪些网页可以使用微信的功能,而后端服务器可以通过IP白名单来限制哪些服务器可以与微信后台通信。这两个措施协同工作,以提高公众号的安全性。

解释一下下面这张图:

在这里插入图片描述

通过上面的概念我们思考下面这样一个场景,商家旗下有8个小程序,然后某个用户同时使用了这8个产品,依据上面的openid的介绍,该用户如果想要正常使用这8个小程序,就需要注册8个账号,十分繁琐,小程序之间没有任何的账号登陆通用性,所以就出现了上图中说的商家开放平台账号,该账号可以将这8个小程序“连”在一起,此时用户访问这8个小程序的时候,全部会拥有相同的unionid,只用注册一遍就可以同时使用这8个产品,方便了用户,也方便了开发人员,而上图的另一个概念——服务商开放平台账号,在我看来是一个拥有开发能力的团队的账号,这个账号的作用是代替商家去开发他们的小程序、公众号等,因为商家可能是一群不懂编程的人,所以他们只需要简单的给我们(服务商开放平台账号)一个授权,我们就可以通过微信的相关接口替他们开发他们的公众号或者小程序。

总结:

服务商:一个懂代码的团队

商家:拥有一堆没有什么功能的小程序、公众号的群体,一般是不懂代码的群体

业务场景:商家想在公众号中添加一些功能,所以授权给服务商,服务商得到了商家的授权,即可对绑定在商家开放平台账号下的所有小程序、公众号进行新功能的开发

第三方平台代开发流程

亿些概念

access_token:使用商家小程序、公众号的appid和appsecret获得的一个参数,调用微信接口的时候用,通常是商家自己开发的时候用

component_access_token:代开发的重要参数,是使用服务商的Appid 和 secret 以及 component_verify_ticket获得的一个参数,通过该参数才有资格去调用那些只开放给商家的接口(前提是商家已给服务商授权)

component_verify_ticket:且当成微信证明该服务商可信度的一个密钥吧,每10分钟向服务商注册开放平台账号填写的开发资料中的接口推送该值,服务商需要自行编写接口进行解密取得该参数,没有此参数,后面一切都是白搭

authorizer_appid::就是商家的小程序、公众号的appid

authorizer_access_token: 是在获得商家授权的情况下,使用 component_access_token 和授权账号 authorizer_appid 生成的,用来调用官方接口,指的是服务商代商家(服务商以商家身份)调用接口,常用于第三方开发模式,这个参数是实现服务商代商家开发小程序、公众号前置流程中的最后一个参数,取得该参数说明你已经胜利了一半了,整个流程你已经清楚啦!!!

开发流程

服务商注册第三方平台账号 ▶️编写获取component_verify_ticket的接口获取该值▶️通过接口文档获取component_access_token▶️通过接口文档获取pre_auth_code▶️在自己的网站向商家暴露授权链接或者授权二维码(文档里进行构造)▶️商家进行扫码给第三方服务商授权▶️第三方服务商通过商家的授权成功回调URL中获取auth_code▶️使用auth_code获取授权信息,授权信息中比较重要的有authorizer_access_tokenauthorizer_refresh_tokenfunc_info这三个参数▶️完成了一系列流程,后续拿着获取到的这些参数基本可以调用开放的任何接口,下面附上微信开放平台官方文档的流程,大家可以加以对照(阐述的是自建授权链接方式,至于官方云服务方式,大家创建微信第三方平台账号的时候自会知晓其中的含义),有不理解的评论区戳我!!!
在这里插入图片描述

代公众号使用JS SDK

概念:大家平时使用微信的时候可以发现在微信的内置浏览器中可以使用例如向照片上传、录音的功能,其实这些功能就是微信官方提供的一些SDK,便于公众号开发者直接进行调用,减轻了开发者的负担,现在由于第三方服务商代商家开发公众号,所以这部分调用SDK的方式会与以往有所不一样(以往是通过公共号的AppIDAPPSecret获取相关参数进行调用),因为第三方无法获得诸如APPSecret这类的敏感参数,所以产生了一种专门面向第三方服务商调取SDK的方法,第三方服务商可以调用这些SDK对商家公众号进行开发,例如公众号菜单、回复消息等等功能。

一些概念

授权事件接收配置:微信发送给网站的一些信息的接收URL,例如前面所说的component_verify_ticket,这里就写component_verify_ticket的接口地址,然后接收微信推送至该接口的信息,进行解密,最终获取component_verify_ticket

消息与事件接收配置:第三方服务商获取微信推送给授权给服务商的公众号的消息的接口地址

消息校验Token:服务商自己定义,用于开发者在代替公众号或小程序接收到消息时,用此Token来校验消息

消息加解密Key:服务商自己定义,用于开发者在代替公众号或小程序收发消息过程中使用。必须是长度为43位的字符串,只能是字母和数字

授权发起页域名:前面不是说商家需要通过服务商提供的链接或者二维码的方式对服务商第三方平台进行授权,第三方平台才能进行代公众号开发嘛,二维码或者链接所处的域名就填在这里,换句话说,不在这个域名下的链接或者二维码扫描或者点击均无效。

公众号开发域名:个人认为可以类比于非第三方平台开发公众号时在公众号后台填写的JS接口安全域名,也就是说调用JS SDK的时候必须处在该域名下才可以正常调用

小程序服务器域名:暂时没用到,不好讲解

小程序业务域名:暂时没用到,不好讲解

授权测试公众号/小程序列表:第三方服务商在代公众号开发完成后可以使用列表中的公众号进行测试,例如(SDK的调用是否正常、能否授权成功等等)

白名单IP地址列表:个人认为可以类比于非第三方平台开发公众号时在公众号后天填写的IP白名单,前面填写的公众号开发域名保证了前端JS接口可以调用JSSDK,而这里的白名单则可以理解为可以调用后端接口,一个管前端、一个管后端(个人理解)

具体流程

说明:具体流程可以参考微信文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#1,https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/Before_Develop/Official_Accounts/js_sdk_instructions.html讲的还是很清楚的,这里只做简要的重点强调

获取jsapi_ticket 方式的不同

原方式:通过公众号的AccessToken获取

第三方平台方式:通过授权公众号Token(authorizer_access_token)进行获取

备注:其余流程与普通调用JS SDK的方式一样,参考微信文档:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/Before_Develop/Official_Accounts/js_sdk_instructions.html和https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html

引用

  1. https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/getting_started/terminology_introduce.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1226262.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++之内建函数对象

C之内建函数对象 算术仿函数 #include<iostream> using namespace std; #include<functional>//内建函数对象头文件 //内建函数对象 算术仿函数void test() {// negate 一元仿函数 取反仿函数negate<int>n;cout << n(100) << endl;//plus 二元仿…

油猴脚本(JavaScript)-练手-简单的随机音乐播放器

浅浅的写个简单的随机音乐播放脚本(可移动)&#xff0c;注释很详细&#xff0c;直接上源码 效果&#xff1a; // UserScript // name 播放音乐脚本 // namespace 代码对我眨眼睛 // version 1.2 // description 在API上请求音乐链接并随机自动连续播放音乐&…

解决向日葵远程控制linux命令行版本无法输入密码的问题

就是如下所示的框&#xff0c;官方说是按方向键↓选择用户名和密码的输入框输入&#xff0c;但是按方向键死活没用&#xff0c;研究了之后按tab键就行了。

WMS仓库管理系统库位分配规划

分配说明 每个商品必须至少有一个分拣位&#xff08;整箱或拆零均可&#xff09;如果只设了拆零分拣位&#xff0c;则入库不分配存储位&#xff0c;只上拆零分拣位&#xff0c;对于DPS分拣商品是一品固定一个货位&#xff0c;对于RF分拣商品是动态分配货位&#xff0c;一个商品…

Java集合大总结——List的简单使用

List简单介绍 鉴于Java中数组用来存储数据的局限性&#xff0c;我们通常使用java.util.List替代数组List集合类中元素有序、且可重复&#xff0c;集合中的每个元素都有其对应的顺序索引。JDK API中List接口的实现类常用的有&#xff1a;ArrayList、LinkedList和Vector。 List…

Linux:清空或删除大文件内容的5种方法

在Linux终端下处理文件时&#xff0c;有时我们想直接清空文件的内容但又不必使用任何Linux命令行编辑器 去打开这些文件。那怎样才能达到这个目的呢&#xff1f;在这篇文章中&#xff0c;我们将介绍几种借助一些实用的命令来清空文件内容的方法。 注意&#xff1a;在我们进一步…

美国政府首席信息安全官详细介绍零信任战略竞赛

如果企业想吸取教训&#xff0c;为庞大的组织快速制定零信任战略&#xff0c;他们应该看看美国联邦政府在 2024 年之前让所有机构合规的努力。 这就是被任命为联邦办公室 CISO&#xff08;首席信息安全官&#xff09; 的克里斯德鲁沙 (Chris DeRusha) 的看法。 周三&#xf…

OpenAI变天:也许会有另一个OpenAI要崛起?

本周五&#xff0c;OpenAI发布重磅声明&#xff0c;创始人兼CEO山姆奥特曼辞任OpenAI&#xff0c;并退出董事会。总裁Greg Brockman&#xff08;格雷格布罗克曼&#xff09;将辞去董事会主席一职&#xff0c;但将继续在公司担任职务&#xff0c;向CEO汇报。 作为吃瓜群众&#…

[CUDA]去除Eigen库中的warning

一、问题提出 假如使用nvcc对cuda代码进行编译时&#xff0c;如果代码中使用了Eigen库&#xff08;头文件&#xff09;&#xff0c;编译时可能会显示很多warning information&#xff0c;如下图红框中所示&#xff1a; 这些warning信息虽然不会影响代码的实际运行&#xff0c;…

【WiFI问题自助】解决WiFi能连上但是没有网的问题

WiFi能连上但是没有网的问题 背景&#xff1a;wifi能连上&#xff0c;但是没有网 解决 遇事不决&#xff0c;先重启啊&#xff01;怎么重启&#xff1f;拔掉电源再插上&#xff01;拔掉网线再插上&#xff01; 直接ok了。 思考记录 今天WiFi又上不了网了&#xff0c;昨天报…

C语言三位数求解(ZZULIOJ1076:三位数求解)

题目描述 已知xyzyzzn&#xff0c;其中n是一个正整数&#xff0c;x、y、z都是数字&#xff08;0-9&#xff09;&#xff0c;编写一个程序求出x、y、z分别代表什么数字。如果无解&#xff0c;则输出“No Answer”注意&#xff1a;xyz和yzz表示一个三位数&#xff0c;而不是表示x…

高可用--限流熔断降级

熔断 熔断是应对微服务雪崩效应的一种链路保护机制。 场景 服务端出现问题 服务指标&#xff1a;响应时间、错误率、连续错误数等&#xff0c;超过阈值出发熔断。硬件指标&#xff1a;CPU、网络IO、内存 目的 服务端恢复需要时间、服务端需要休息避免全调用链路崩溃&…

memcacheredis构建缓存服务器

一、缓存服务器&#xff1a; 1、简介&#xff1a; ① 许多Web应用都将数据保存到RDBMS中&#xff0c;应用服务器从中读取数据并在浏览器中显示。 但随着数据量的增大、访问的集中&#xff0c;就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响。 ● RDBMS&…

Windows 下提取EXE文件中的图标

可以使用两种工具&#xff1a; 1 使用 IconViewer 下载地址: https://www.botproductions.com/iconview/download.html 2 使用 QuickAny2Ico 下载地址&#xff1a; Quick Any2Ico - Create icons from any source 2.1 操作步骤 样例(采用 python-3.7.9.exe 作为例子提取为…

MyBatis 操作数据库(构造动态 SQL)

前言 动态 SQL 是 Mybatis 的强⼤特性之⼀&#xff0c;能够完成不同条件下不同的 sql 拼接。 <if> 标签 我们在填写用户信息的时候经常会看到如下的界面&#xff0c;用户信息中包含必填信息和非必填信息&#xff0c;非必填信息是填和不填都可以的&#xff0c;那这样的话…

UDS 14229-1定义的请求的响应行为

UDS服务响应规则 重要提示服务器一般响应行为包含子功能的请求响应行为物理寻址请求功能寻址请求 没有子功能参数的服务响应行为物理寻址客户端请求功能寻址客户端请求 伪代码示例 重要提示 服务应当支持物理寻址方式请求&#xff0c;部分服务也支持功能寻址方式请求。在功能寻…

Linux tc 使用

tc模拟延时丢包等网络故障依赖的内核驱动 /lib/modules/5.15.0-52-generic/kernel/net/sched/sch_netem.ko有些系统并不是默认就安装上该驱动的&#xff0c;如果没有安装该驱动&#xff0c;构造网络故障时会报错。 root:curtis# tc qdisc change dev enp4s0 root netem delay…

LoRA低秩微调技术详解

在当今快节奏的技术环境中&#xff0c;大型AI模型正在推动不同领域的突破。 然而&#xff0c;根据特定任务或数据集定制这些模型可能是一项计算和资源密集型工作。 LoRA是一种突破性且高效的微调技术&#xff0c;它利用这些高级模型的强大功能来执行自定义任务和数据集&#xf…

Word 2016 删除标注

步骤&#xff1a; 菜单栏--审阅--删除--删除文档中的所有标注

07.webpack的性能优化 -- 产出代码

目标&#xff1a; 体积更小合理分包&#xff0c;不重复加载速度更快&#xff0c;使用内存更小 实现功能 小图片的base64编码提取公共代码bundle加hashIngorePlugin懒加载使用CDN使用productionScope Hosting 1. 使用production module.exports smart(webpackCommonConf, …