微信公众号第三方平台开发,零基础入门。想学我教你啊

2023-11-15

在学习微信第三方平台开发之前你应该会的:

1,常用接口测试工具的使用:postman

2,学会看第三方平台文档。(这个很关键,不过很多还是喜欢百度,白嫖别人的操作文档)

3,学习排查问题,分析问题。

4,第三方平台的限制,和公众号,订阅号这些关系要了解。测试订阅号没有认证,没有认证的订阅号区别都是很大的。

5,善于使用缓存解决项目当中业务性能瓶颈。

微信开放文档:微信公众平台开发概述 | 微信开放文档

开盘:

上一个流程图:

 第三方平台相当于代理我们微信公众号的配置,通过第三方平台的配置发起事件监听,包含回调信息处理,我们通过:授权事件接收配置--》开启推送Ticket--》授权后实现业务--》消息校验Token--》消息与事件接收配置--》微信公众号业务

流程就是这么简单,但是接口比较多,操作起来比较麻烦,还得管理token实效。我们最终要获取微信公众号的权限token才能实现业务扭转,要不然其他都是扯淡。

我们来看看第三方平台的页面配置和权限:

 我这是自己的映射域名,正式上线后换成正式域名。

权限配置:

 需要调试的接口:

接口比较多我们nacos配置:

wechat:
  config:
    #appid
   component_appid: *************
   #aeskey
   component_encodingaeskey: ****************
   #验证token
   component_token: ****************
   #加密正式
   component_appsecret: ***********
   #授权域名
   redirect_url: http://d1989091s1.51mypc.cn/wechat/preauth/callback
   #获取component_token url地址
   api_component_url: https://api.weixin.qq.com/cgi-bin/component/api_component_token
   #创建预授权 url地址
   api_create_preauth_url: https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token=
   #权限查询api 授权平台地址
   api_query_auth_url: https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=
   #验证token 刷新地址
   api_authorizer_token_url: https://api.weixin.qq.com/cgi-bin/component/api_authorizer_token?component_access_token=
   #媒体文件下载地址
   api_media_download_url: https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID
   #客服回复用户文本信息
   api_message_custom_send_url: https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=    
   #获取刷新token接口地址
   api_refresh_url: https://api.weixin.qq.com/cgi-bin/component/api_get_authorizer_info?component_access_token=
   #openid获取 unionid地址 
   api_unionid_batchget_url: https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=
   #获取用户信息
   api_unionid_get_url: https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

代码:

1,获取第三方平台授权component_token

2,获取预授权api_create_preauthcode

3,微信授权平台后获取权限接口根据预授权token+扫码授权code  (api_query_auth)

4,扫码成功获取queryauthcode

5,通过queryauthcode获取公众号authorizer_token

6,通过authorizer_token操作公众号业务。

一,获取component_token

请求地址:https://api.weixin.qq.com/cgi-bin/component/api_component_token

请求参数:

{
    "component_appid":"********",
    "component_appsecret":"****",
    "component_verify_ticket":"ticket@@@lKkaZ1rc4AL43879Kq7g4vmz8DrLdjWNtpnBoUl5tEJtcLhuSGTdayh4rZHxmRv12YB7CU_s7yQ"
    }

     "errmsg": "access clientip is not registered requestIP: 58.246.190.94 rid: 62b67820-316cbaee-50f9473e"

需要配置ip白名单:

 

 二,获取微信预授权pre_auth_code

请求地址:https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token=58_D1yfTmJSO97Ak6JL3n_2qav_GhxAUJTS7FANyFFzeZmgD5M-nn3XqvahgJkzd-5T1NhMKnRL7_gmTBAmAYrDfwz8o6pbw4yMJ_MBtTLCcMC-ZJf-zZXedMCjlAivbQ1iZ0JF6YITBDLo43jNWEHjAIACKN

请求参数:

{

"component_appid":"wx6ec5488b62c" 

}

 三,需要把预授权的token 和 component_appid 和重定向回调地址返回到html页面进行授权处理

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">


</head>
<body>
<div class="" style="text-align:center;padding-top:10%;font-size:10em;">
    <a href=https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=wx6ec5e8cec&pre_auth_code=preauthcode@@@YWPYsD65xHdHMkKkSoXTx8W5sXhg3j0l_QfGx_r5lADHryjDH9nEn80ILQb-TBp0pq8Gn5&redirect_uri=http://d1989091s1.51mypc.cn/wechat/preauth/callback id="url">点击授权</a>
</div>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" >
  $(function () {
      $.ajax({
          url: "/wechat/auth/cache",
          type: "post",
          success: function (r) {
              if (r.code == 0) {
                  var component_access_token = r.data.component_access_token;
                  var  component_appid = r.data.component_appid;
                  var  pre_auth_code = r.data.pre_auth_code;
                  var  redirect_uri = r.data.redirect_uri;

                var url = 'https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid='+component_appid
                    +'&pre_auth_code='+pre_auth_code+'&redirect_uri='+redirect_uri;
                  $('#url').attr('href',url);
              } else {
                  alert(r.msg)
              }
          }
      });
  })




</script>


</body>
</html>

授权的页面:这里是需要管理员,谁认证的订阅号,就谁扫码,如果你没有公众号订阅号没有绑定,那就授权不了。

 

 

 

这里的权限是我们第三方平台开启的权限集需要什么功能就开放什么权限功能。

四 更新授权回调。 

    <a href=https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=wx6ec5e8cec&pre_auth_code=preauthcode@@@YWPYsD65xHdHMkKkSoXTx8W5sXhg3j0l_QfGx_r5lADHryjDH9nEn80ILQb-TBp0pq8Gn5&redirect_uri=http://d1989091s1.51mypc.cn/wechat/preauth/callback id="url">点击授权</a>

## 回调地址

redirect_uri=http://d1989091s1.51mypc.cn/wechat/preauth/callback 

 回调地址会返回一个auth_code默认一个小时过期,为了防止重复扫码,你必须获取到刷新token,定时刷缓存,保证token不用过期。

http://d1989091s1.51mypc.cn/wechat/preauth/callback?auth_code=queryauthcode@@@*****&expires_in=3600

 五,第三方平台获取公众号权限token

请求地址:https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=58_7iK29cSWOffcFGCruvhgy7DkLSSnrABbm7bTho5TMBSpkh5Y0NOyZ023ZvgyS5TVx-aywadpgI05WP5A3jwTGZET2QHcgUhn3Eh73SmybB2y2ROC6fKQNlQEGJFdNsoMMs-1Mm2NIZLYFY-ZNBWbAGAHVQ

 参数:

{

"component_appid":"********" ,

"authorization_code": "queryauthcode@@@KEm1qXN8KFuVWO05a3FhXhMtAGQp8RFA4dAEaldQ_ffdvsKIUtDWpVXtzu8dDH8D1DCMhAS61RmonKgPBjecUw"

}

响应: 

{
    "authorization_info": {
        "authorizer_appid": "*********",
        "authorizer_access_token": "58_PZeVA66EDTONWgd-8X9Miuu2dqFQ9FzFar4JTLahB5QmCIdSE1gY9BCYQVnJ8peVGm-1231L3oyIDZ92xlbpSbESN0aIlGW-6XfJXvDIWP6b_b-WW2yEM20AZkkHnECQHDMPiD0Uzqh6sCoHrVDjRPCcAFDVTG",
        "expires_in": 7200,
        "authorizer_refresh_token": "refreshtoken@@@UFuvwOxnZ0eXBGEghR9CD12DVTQnaZEwIQYBBGc6Oh89npg",
        "func_info": [
            {
                "funcscope_category": {
                    "id": 1
                },
                "confirm_info": {
                    "need_confirm": 1,
                    "already_confirm": 0,
                    "can_confirm": 1
                }
            },
            {
                "funcscope_category": {
                    "id": 2
                },
                "confirm_info": {
                    "need_confirm": 1,
                    "already_confirm": 0,
                    "can_confirm": 1
                }
            },
            {
                "funcscope_category": {
                    "id": 4
                }
            },
            {
                "funcscope_category": {
                    "id": 6
                }
            },
            {
                "funcscope_category": {
                    "id": 7
                }
            },
            {
                "funcscope_category": {
                    "id": 9
                }
            },
            {
                "funcscope_category": {
                    "id": 15
                }
            }
        ]
    }
}

这个权限token默认2个小时过期,所以这里需要定时刷新获取权限token

authorizer_refresh_token 代表我们定时刷新权限token,这个可以帮我们解决重复扫码的问题,管理员只需要扫码一次就好了。

六。公众号权限token的刷新

请求地址:

https://api.weixin.qq.com/cgi-bin/component/api_get_authorizer_info?component_access_token=58_9oS6xgfaJoMRlLNAJkGllIzMmgcHhR1l3C3wVdnJbO8I_oWYJZ42Bmhtlbyr_Far_plANKQzU4andVsFlSGnMnDPl8vPMtvPa9T_ju6TOwBoaG_2FQFURf3O7ZP2wyeO8qURPM2cXenWyInMPXFaAAAJRZ

请求参数:

authorizer_appid 需要授权的第三方订阅号appid

component_appid 第三方平台appid

{
    "component_appid":"wx6ec5e8ceb4882c",
    "authorizer_appid":"wx3605b881a5f30b22"
}

 

 七,通过刷新token定时去更换权限缓存

请求地址:https://api.weixin.qq.com/cgi-bin/component/api_authorizer_token?component_access_token=58_qNdrBSy8hDuuD7Ecyq4X-d-4aVUxAjoqxVYjGkstVgV9UYMdmc-H9uJPLbim89pluPrKbWnLuQQUIMjmgj81YdyBSVOVL4hIoUjBno-uAuB7cp6jkK81MMSmQexM_IolkeUNeS7l6XyF3H1PTMXgADAKDO

请求参数:

 

{

    "component_appid":"*******",

    "authorizer_appid":"wxbe11fb37fd31d2cb",

    "authorizer_refresh_token":"refreshtoken@@@UFuvwOxnZ0eXBGEghR9DVTQnaZEwIQYBBGc6Oh89npg"

}

     

 authorizer_access_token 验证成功的token就是我们公众号需要获取的凭证。

到这里我们就可以根据公众号的业务进行接口直接的调用了。整体的流程和实现已经完成了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信公众号第三方平台开发,零基础入门。想学我教你啊 的相关文章

随机推荐

  • 如何将json字符串写入table表格中

    JSON JavaScript Object Notation 是一种轻量级的数据交换格式 可以方便的将后台复杂的数据带回到前台进行展示 那么如何把json字符串写入到table表格之中呢 json简单说就是javascript中的对象和数
  • 美通企业日报

    今日看点 2019时尚育儿
  • java 常见错误合集

    java lang NullPointerException 这个异常都是因为调用null对象的方法 就是一个对象还没有没有正常初始化 就先调用它的方法比如 Object obj null obj toString 这就会抛出 这个异常
  • java中strictfp么意思_java中的strictfp的作用

    自Java2以来 Java语言增加了一个关键字strictfp 虽然这个关键字在大多数场合比较少用 但是还是有必要了解一下 strictfp 的意思是FP strict 也就是说精确浮点的意思 在Java虚拟机进行浮点运算时 如果没有指定s
  • 基于STM32控制的数字BUCK电路及程序编写

    本文芯片采用STM32G474CBT6 采用STM32cubeMX进行程序生成 BUCK电路拓扑结构 如图所示 BUCK变换器主要由电源VDC 场效应管MOSFET 续流二极管VD 电感L以及滤波电容C和负载RES组成 当MOSFET开通时
  • linux pxe安装视频,Linux利用PXE安装虚拟机的方法

    之前和友人聊天 知道可以利用PXE安装虚拟机 相信很多用户都和小编一样还不是很清楚 在这小编就把学习到的方法分享给大家 方法如下 1 1 dnsmasq apt get install dnsmasq vim etc dnsmasq con
  • elasticsearch sort script实现字段值等于某值排名靠前

    什么是script语言 script语言是es提供的一种支持自定义编程的用于复杂查询的脚本语言 主要类型有painless expressions等 需求描述 实际业务场景需要将某字段等于某值的排在前面 其他数据靠后 比如 雇员属性 nam
  • 阿里跟腾讯又㕛叒打起来了,这次是在东南亚

    腾讯与阿里的先头部队 已经在东南亚开始新的战争 在这之中 电商的争夺尤其激烈 神经浪游者 作者威廉 吉布森说 未来已来 只是分布得不太均匀 互联网的分布尤其如此 先是欧美 之后中国 如今 投资人和从业者纷纷押注 昔日的好时光将在东南亚将重现
  • sqlite3 提示 not found

    在android开发中使用adb shell下的sqlite3命令来查看SQLite数据库时 出现了 sqlite3 not found 错误 在网上搜索了一下问题的原因 原来是模拟器或真机中的 system xbin 目录下少了sqlit
  • 华为OD机试 - 工作安排 - 动态规划(Java 2023Q1 100分)

    目录 一 题目描述 二 输入描述 三 输出描述 四 动态规划 五 解题思路 六 Java算法源码 七 效果展示 1 输入 2 输出 3 说明 华为OD机试 2023B卷题库疯狂收录中 刷题点这里 一 题目描述 小明每周上班都会拿着自己的工作
  • vue设置全局过滤器

    src目录下新建文件夹filters 新建文件index js内容为 const timefilters getdate data console log data getdatetime data console log data exp
  • 十大Web网站漏洞扫描工具

    1 Nikto 这是一个开源的Web服务器扫描程序 它可以对Web服务器的多种项目 包括3500个潜在的危险文件 CGI 以及超过900个服务器版本 还有250 多个服务器上的版本特定问题 进行全面的测试 其扫描项目和插件经常更新并且可以自
  • 信号槽的返回值(QMetaObject::invokeMethod的用法)——Qt

    前言 之前从未想过信号槽是可以有返回值的 因为虽然信号发出去了 但是它在事件循环中 什么时候执行还不一定 这个想法固然是对的 但是这也不是不能实现的 我查了网上的一些资料 发现差不多有一下三种方法 1 信号槽里加指针或引用 这个不推荐 隐患
  • 并发处理

    1 并发活动 进程的引入 操作系统的特性之一是并发与共享 即在系统中 内存 同时存在几个相互独立的程序 这些程序在系统中既交叉地运行 又要共享系统中的资源 这就会引起一系列的问题 包括 对资源的竞争 运行程序之间的通信 程序之间的合作与协同
  • 分布式锁的实现

    目录 分布式锁 分布式锁的引出 单体锁存在的问题 共享数据不安全 超卖现象 锁的理解 拓展 分流 拓展 分流Nginx简单理解 分布式锁的引出 分布式锁的设计思路 分布式锁的常见应用场景 分布式锁方案 数据库的分布式锁如何实现 Redis分
  • 《手把手教你》系列练习篇之4-python+ selenium自动化测试(详细教程)

    1 简介 今天我们继续前边的练习 学习和练习一下 如何使用webdriver方法获取当前测试页面的URL 如何获取当前页面的title 如何打开浏览器的一个新建页面 如何操作单选按钮等等 这些小练习 来巩固基础 2 webdriver方法获
  • WebGL 实践篇(二)—— 屏幕坐标与裁剪坐标,片段着色器中的颜色定义

    一 裁剪坐标系 canvas坐标系以及屏幕坐标系 裁剪坐标 WebGL坐标系 的范围 1 1 原点在中间 x正值向右 y正值向上 屏幕坐标 原点在左上角 x正值向右 y正值向下 canvas坐标 与屏幕坐标相比 原点向右向下偏移 x y正值
  • 如何安装Jenkins并配置插件(清华源)

    Linux启动jenkins 将 jenkins war 放在 usr local jenkins 目录下 执行命令启动 Jenkins 1 nohup java jar jenkins war httpPort 8000 安装Jenkin
  • Gateway服务的搭建

    1 Gateway的作用 网关的核心功能特性 请求路由 权限控制 限流 架构图 权限控制 网关作为微服务入口 需要校验用户是是否有请求资格 如果没有则进行拦截 路由和负载均衡 一切请求都必须先经过gateway 但网关不处理业务 而是根据某
  • 微信公众号第三方平台开发,零基础入门。想学我教你啊

    在学习微信第三方平台开发之前你应该会的 1 常用接口测试工具的使用 postman 2 学会看第三方平台文档 这个很关键 不过很多还是喜欢百度 白嫖别人的操作文档 3 学习排查问题 分析问题 4 第三方平台的限制 和公众号 订阅号这些关系要