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

标题

  • 微信开发的亿点点概念
  • 第三方平台代开发流程
    • 亿些概念
    • 开发流程
  • 代公众号使用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.mfbz.cn/a/164514.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

图像分类(五) 全面解读复现ResNet

解读 Abstract—摘要 翻译 更深的神经网络往往更难以训练,我们在此提出一个残差学习的框架,以减轻网络的训练负担,这是个比以往的网络要深的多的网络。我们明确地将层作为输入学习残差函数,而不是学习未知的函数。我们提供了非…

项目出错汇总

java: 错误: 无效的源发行版:15 java: 无效的目标发行版: 17 四步加上这个,改一下

ADS村田电感.mod(spice netlist文件)和.s2p模型导入与区别

ADS村田电感.mod(spice netlist文件)和.s2p模型导入与区别 简介环境过程s2pspice netlist(.mod文件)导入和结果对比 简介 记录了ADS村田电感.mod(spice netlist文件)和.s2p模型导入与区别 环境 ADS2020 …

Springboot框架中使用 Redis + Lua 脚本进行限流功能

Springboot框架中使用 Redis Lua 脚本进行限流功能 限流是一种用于控制系统资源利用率或确保服务质量的策略。在Web应用中,限流通常用于控制接口请求的频率,防止过多的请求导致系统负载过大或者防止恶意攻击。 什么是限流? 限流是一种通过…

【【SOC设计之 数据回路从 DMA到 FIFO再到BRAM 再到FIFO 再写回DMA】】

SOC设计之 数据回路从 DMA到 FIFO再到BRAM 再到FIFO 再写回DMA 基本没问题的回路设计 从 DMA出发将数据传递到 FIFO 再 写到 自定义的 RTL文件中 再写到 BRAM 再到 自定义的RTL文件 再到 FIFO 再写回DMA block design 的 设计连接 可以参考我上一个文件的设计 下面介绍两个c…

gd32关于IO引脚配置的一些问题

一、gd32f103的PA15问题 1、 #define GPIO_SWJ_NONJTRST_REMAP ((uint32_t)0x00300100U) /*!< full SWJ(JTAG-DP SW-DP),but without NJTRST */ #define GPIO_SWJ_SWDPENABLE_REMAP ((uint32_t)0x00300200U) /*!< JTAG-DP disabled and SW-DP enab…

参数值为列表,不懂代码如何参数化?

最近在我的教学过程中&#xff0c;我的一个学生问了我一个问题&#xff0c;他们公司的一个接口参数值是列表&#xff0c;列表中值的数量有多有少&#xff0c;问我在 jmeter 中如何让这个参数的值进行参数化&#xff1f; 如果你想学习自动化测试&#xff0c;我这边给你推荐一套视…

IIC 通信协议之stm32 驱动OLED

前言 使用stm32 驱动4 Pin 的OLED&#xff0c; 现在网上开源的资料多的是&#xff0c;但是为了锻炼自己使用第一手资料的能力&#xff0c;今天我还是从数据手册开始&#xff0c;从头造一波轮子&#xff0c;同时也是为了加深自己对 IIC 协议的理解 &#xff0c;本系列内容我会从…

【Spring总结】注解开发

本篇讲的内容主要是基于Spring v2.5的注解来完成bean的定义 之前都是使用纯配置的方式来定义的bean 文章目录 前言1. Spring v2.5 注解开发定义bean第一步&#xff1a;在需要定义的类上写上注解Component第二步&#xff1a;在Spring Config中定义扫描包第三步&#xff1a;主方法…

关于链表的几道算法题

1.删除链表的倒数第n个节点 力扣https://leetcode.cn/submissions/detail/482739445/ /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(…

第八部分:JSP

目录 JSP概述 8.1&#xff1a;什么是JSP&#xff0c;它有什么作用&#xff1f; 8.2&#xff1a;JSP的本质是什么&#xff1f; 8.3&#xff1a;JSP的三种语法 8.3.1&#xff1a;jsp头部的page指令 8.3.2&#xff1a;jsp中的常用脚本 ①声明脚本&#xff08;极少使用&#xf…

单链表在线OJ题(详解+图解)

1.删除链表中等于给定值 val 的所有节点 本题的要求是输入一个val的整形值&#xff0c;若链表中节点存储的值与val相等&#xff0c;则删除这个节点&#xff0c;并最后返回这个删除节点后的链表&#xff0c;思路如下&#xff1a; 我们可以直接使用while循环&#xff0c;并且使用…

青少年CTF-WEB-2048

题目环境&#xff1a; 针对这种游戏通关类题目&#xff0c;常见的有两种情况 一、有参数改参数的数值达到题目规定的分数即可拿到flag 二、没有参数那么flag就是被编码了&#xff0c;找编码即可 这道题并没有说题目通关即可获得flag&#xff0c;也并没有发现参数 所以这里猜测f…

HFSS螺旋线圈的设计与仿真

HFSS螺旋线圈的设计与仿真 HFSS中设计螺旋线圈的方法&#xff1a;参考文献&#xff1a; HFSS中设计螺旋线圈的方法&#xff1a; 打开软件Ansys Eletronics Desktop 2022 R1&#xff0c; 建立工程&#xff0c; File/New 插入HFSS设计&#xff0c; Project/Insert HFSS Design …

基于瞬态优化算法优化概率神经网络PNN的分类预测 - 附代码

基于瞬态优化算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于瞬态优化算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于瞬态优化优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

数据结构——树状数组

文章目录 前言问题引入问题分析树状数组lowbit树状数组特性初始化一个树状数组更新操作前缀和计算区间查询 总结 前言 原题的连接 最近刷leetcode的每日一题的时候&#xff0c;遇到了一个区间查询的问题&#xff0c;使用了一种特殊的数据结构树状数组&#xff0c;学习完之后我…

RobotFramework之用例执行时添加命令行参数(十三)

学习目录 引言 标签tag 设置变量 随机执行顺序 设置监听器 输出日志目录和文件 引言 Robot Framework 提供了许多命令行选项&#xff0c;可用于控制测试用例的执行方式以及生成的输出。本节介绍一些常用的选项语法。 标签tag 之前文章我们介绍过&#xff0c;在测试套件…

基于STC12C5A60S2系列1T 8051单片的模数芯片ADC0809实现模数转换应用

基于STC12C5A60S2系列1T 8051单片的模数芯片ADC0809实现模数转换应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍模数芯片ADC0809介绍通过模数芯片ADC0809把电压模…

基于灰色神经网络的预测算法——订单需求预测

大家好&#xff0c;我是带我去滑雪&#xff01; 灰色系统理论的不确定性处理与神经网络的非线性建模相结合&#xff0c;有望更好地处理实际问题中的不确定性和复杂性。本期使用灰色神经网络实现预测冰箱订单需求。 一、问题背景与模型建立 &#xff08;1&#xff09;灰色理论…