【微信】公众号开发

文章目录

  • 概述
  • 与微信交互
  • 环境准备
    • 开发者工具
  • 注册公众号
  • 服务器基本配置
  • 存取access_token
  • 示例代码
  • 来源

概述

不同类型公众号主要区别
在这里插入图片描述

与微信交互

实际上我们在公众号里的所有操作,都会发送到微信的服务器上,微信服务器将这些动作的具体含义按照一定的格式进行封装后,发送到微信公众号所对应的服务器上(这个服务器的地址可以由开发者在微信公众号的后台进行配置),开发者通过编写代码来处理不同的用户行为,并将处理后的结果按照一定的格式返回给微信服务器,再由微信服务器发送到微信公众号里面,从而完成了一次交互过程。
在这里插入图片描述

环境准备

1、微信公众号

微信公众号可以在微信·公众平台的官网上申请。前文说过,微信公众号分为几种类型,不同的类型具有不同的权限,具体的权限列表可以查看微信公众平台技术文档。值得注意的是,现在已经不再支持个人类型的公众账号申请微信认证。

2、服务器

由于我们的服务器需要与微信服务器进行交互,因此必须能够让微信服务器可以访问到。很多公司都提供了云服务器租赁,价格不一,可以自行申请,细节在此不表。如果不想花钱申请,也可以使用一些外网穿透工具,将本地的IP暴露到公网中供外部访问,具体的工具请自行百度,不过大部分软件稳定性无法保证,而且分配的域名经常改变。

开发者工具

注册公众号

微信公众平台
在这里插入图片描述
申请订阅号比较简单,服务号相对复杂点,另外要认证的话还要额外提交一些材料。我们可以根据不同的业务需求去申请不同类型的账号,基本上常用的权限列表已经可以满足大部分的场景。我们平常大多数关注的都是订阅号,他们统一都放置在微信应用的订阅号消息列表中,没有微信支付等高级功能,只是用于发布文章等基础功能。

实际上我们在公众号里的所有操作,都会发送到微信的服务器上,微信服务器将这些动作的具体含义按照一定的格式进行封装后,发送到微信公众号所对应的服务器上(这个服务器的地址可以由开发者在微信公众号的后台进行配置),开发者通过编写代码来处理不同的用户行为,并将处理后的结果按照一定的格式返回给微信服务器,再由微信服务器发送到微信公众号里面,从而完成了一次交互过程。

服务器基本配置

无论是在真实公众号的 开发 - 基本配置 - 服务器配置,还是在 测试号管理 中,我们都可以看到这几个基本参数:
开发者ID(AppID)、开发者密码(AppSecret)、服务器地址(URL)、令牌(Token)

AppID 是公众号唯一开发识别码,配合开发者密码可调用公众号的接口能力,大多数微信接口都需要附带该参数。

AppSecret 是校验公众号开发者身份的密码,具有极高的安全性。切记勿把密码直接交给第三方开发者或直接存储在代码中。如需第三方代开发公众号,请使用授权方式接入。其中获取accessToken就需要同时传入AppID和AppSecret获取。

URL 是开发者用来接收微信消息和事件的接口URL,也就是我们服务后端的入口地址,需要注意的是该地址必须以域名形式填写,且必须以http 或 https 开头,分别支持80端口和443端口。如:http://yuanj.natapp1.cc/wechat。

Token 可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性),也就是我们项目和微信服务端进行通信时,必须保证公众平台配置的Token和我们后台代码配置的Token保持一致,这样微信就能验证我们身份。

注:EncodingAESKey 参数由开发者手动填写或随机生成,将用作消息体加解密密钥,我们前期可以采用明文模式进行开发测试,暂时先不用关注。

存取access_token

access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时(7200秒),需定时刷新,重复获取将导致上次获取的access_token失效。

access_token这个参数非常重要,几乎贯穿整个微信公关号项目开发,我们如何在有效期内定时刷新获取呢?
如果我们的微信公众号项目是单服务架构,可以直接作为静态变量存储在内存里;如果是多服务,可以用中间件存储,Redis、数据库都可以。SpringBoot项目内部可以通过@Scheduled注解,执行定时任务,既然access_token有效期是2小时,那我们可以一小时刷新获取一次,将其存入Redis,覆盖之前的access_token。

示例代码

php

来源

手把手教你入门微信公众号开发
微信公众号开发基本流程

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

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

相关文章

PWM波输出-定时器输出比较单元

目录 1,前言 2,实现过程 2.1 比较部分 2.2 输出部分 1,前言 电平,作为单片机的“肌肉”,承担着实践单片机的“想法“的重要任务。而PWM波,则是电平这个大类的重中之重,可以说,没…

STM32的芯片无法在线调试的情况分析

问题描述 本博客的目的在于帮助网友尽快地解决问题, 避免浪费时间, 查漏补缺。 在stm32的开发过程中,有时会遇到"STM No Target connected"的错误提示,这说明MDK开发环境无法与目标设备进行通信,导致无法烧…

YOLOv9改进策略 :注意力机制 | 注意力机制与卷积的完美融合 | 最新移动端高效网络架构 CloFormer

💡💡💡本文改进内容: 引入CloFormer 中的 AttnConv,上下文感知权重使得模型能够更好地适应输入内容。相比于局部自注意力机制,引入共享权重使得模型能够更好地处理高频信息,从而提高性能。 💡💡💡注意力机制与卷积的完美融合 AttnConv | 亲测在多个数据集能够…

windows安全中心设置@WindowsDefender@windows安全中心常用开关

文章目录 abstractwindows defender相关服务👺 停用windows Defender临时关闭实时防护使用软件工具关闭defender control(慎用)dismdControl 其他方法使其他杀毒软件注册表修改 保护历史恢复被认为是有病毒的文件添加信任目录,文件,文件类型或进程 abstract window…

算法复习:链表

链表定义 struct ListNode { int val;ListNode *next;ListNode(int x) : val(x), next(nullptr) {} }; 链表的遍历:ListNode phead; while(p!null) pp.next; 找到链表的尾结点:phead; while(p.next!null)pp.next; 链表节点的个数: phead…

java 继承extends

权限 子类会自称父类所有的非私有的成员变量和方法(不包括缺省和protected)权限修饰符的种类如下: 上面說的protected 方法可以被任意包的子类中使用,但是子类的的实例不能使用,因为没有继承,否则报错。 继…

腾讯云2核4G服务器优惠价格165元一年,限制500GB月流量

腾讯云轻量2核4G5M服务器租用价格165元1年、252元15个月、三年900元,配置为轻量2核4G5M、5M带宽、60GB SSD盘、500GB月流量、上海/广州/北京,腾讯云优惠活动 yunfuwuqiba.com/go/txy 腾讯云轻量2核4G5M服务器租用价格 腾讯云:轻量应用服务器1…

RecyclerView 调用 notifyItemInserted 自动滚动到底部的问题

项目中发现一个奇怪的现象 RecyclerView 加载完数据以后,调用 notifyItemInserted 方法,RecyclerView 会滑动到底部。 简化后的效果图: 因为这个 RecyclerView 的适配器有一个 FootViewHolder,所以怀疑是 FootViewHolder 的问题…

Linux中常用命令(文件、目录和文件压缩)及功能示例

一、Linux关于文件与目录的常用命令及其功能示例 命令: ls 全名: List (列表) 常用选项: -l: 详细列表格式,显示详细信息。-a: 显示所有文件,包括隐藏文件。 功能: 列出目录内容。 示例: ls -la /home 此命令以详细格式列出/home目录中的所有文件&#x…

推荐一本牛逼的入门 Python书!,如何试出一个Python开发者真正的水平

本书详细解说了 Python 语言和编程的本质,无论你是否接触过编程语言,只要是 Python 编程的初学者,都可阅读本书。 本书讲解的内容虽然基础,但并不简单。本书提供了 165 幅图表,可以让大家能够轻松地理解并掌握复杂的概…

踏入网页抓取的旅程:使用 grequests 构建 Go 视频下载器

引言 在当今数字化的世界中,网页抓取技术变得越来越重要。无论是获取数据、分析信息,还是构建自定义应用程序,我们都需要从互联网上抓取数据。本文将介绍如何使用 Go 编程语言和 grequests 库来构建一个简单的 Bilibili 视频下载器&#xff…

UE4_碰撞_射线检测不到物体原因及跳不到圈内的问题

UseSimpleAsComplex 和 UseComplexAsSimple 标记的作用和使用时间。 虚幻引擎 4 中有简单和复杂碰撞形态。 简单碰撞 是基础,如盒体、 球体、胶囊体和凸包。 复杂碰撞 是给定对象的三角网格图。 虚幻引擎 4 会默认创建简单和复杂两种形态,然后基于用户需…

gan zoo: 最新GAN 相关paper/code收集

相关推荐: 简单实现 GAN 简单实现 DCGAN 简单实现 InfoGAN 简单实现 Pix2Pix 一文带你读懂概率生成模型 GPT-1/GPT-2/GPT-3简介 GPT从0到1构建(附视频代码链接) 一文带你读懂变分自编码器(VAEs) 文本引导图像生成模型的演变(DALLE/CLIP/GLIDE) 作者对迄今为止所有的…

Java类和对象练习题

练习一 下面代码的运行结果是() public static void main(String[] args){String s;System.out.println("s"s);} 解析:本题中的代码不能编译通过,因为在Java当中局部变量必须先初始化,后使用。所以此处编译不…

JAVAEE之网络原理

1.IP地址 IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址。 格式 IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)&…

每日一题(leetcode331):验证二叉树的前序序列化——栈

类似消消乐,数字+“#”“#”就可以消成一个“#”,到最后如果栈中只剩一个“#”便说明序列正确。 当然也可以用槽位理解,一个数字出现会消耗一个槽位产生两个槽位(即产生一个槽位),一个“#”出现…

企业防止数据泄露的措施有哪些?(企业机密文件防泄密解决方案)

企业防止数据泄露的措施是一个复杂且关键的问题,涉及到企业的核心竞争力和信息安全。 随着信息技术的快速发展,数据泄露事件频发,给企业带来了巨大的经济损失和声誉损害。 企业防止数据泄露的措施有哪些? 首先,企业需要建立健全…

雷卯有多种接口与电源保护方案

在当今的电子设备中,各种接口和电源保护至关重要。它们不仅关乎设备的正常运行,更直接影响到数据传输的稳定性和设备的安全。雷卯公司以其专业的技术和丰富的经验,为您提供全面的接口与电源保护方案,确保您的系统安全稳定运行。 …

Android vehicle车辆属性新增demo

目录 前言一、Vehicle模块1.1 简介1.2 Vehicle框架1.3 主要功能和特点1.4 重要服务CarService1.4.1 简介1.4.2 组成1.4.3 启动时序1.4.4 作用 二、车辆属性新增demo2.1 CarPropertyService2.1.1 简介2.1.2 架构2.1.3 车辆属性 API2.1.4 CarPropertyService 初始化流程 2.2 App …

学习鸿蒙基础(9)

目录 一、鸿蒙国际化配置 二、鸿蒙常用组件介绍 三、鸿蒙像素单位介绍 四、鸿蒙布局介绍 1、Row与Column线性布局 2、层叠布局-Stack 3、弹性布局 4、栅格布局 5、网格布局 一、鸿蒙国际化配置 base目录下为默认的string。en_US对应美国的。zh_CN对应中国的。新增一个s…