微信公众号开发与本地调试详细教程

news2025/4/3 13:30:11

在进行微信公众号开发时,本地调试是一个关键的步骤。本文将详细介绍如何进行微信公众号开发并在本地环境中进行调试。我们将以Nginx为例,演示如何配置虚拟主机,使用ngrok进行内网穿透,以及进行网页授权和JS SDK的测试。

1. 准备工作

首先,确保你已经完成了以下准备工作:

  • 注册了一个微信公众号。
  • 安装了Nginx并启动了Web服务器。
  • 下载并安装了ngrok,用于内网穿透。

2. 配置Nginx虚拟主机

通常,每个项目都应以虚拟主机方式运行,以便Nginx能够将请求正确路由到对应的项目。以下是配置Nginx虚拟主机的步骤:

  1. 打开Nginx的配置文件,通常位于 /etc/nginx/nginx.conf/etc/nginx/conf/nginx.conf

  2. 在配置文件中找到 http 块,添加以下内容:

server {
    listen 80;
    server_name your-domain.com; # 将your-domain.com替换为你的域名或ngrok分配的域名

    location / {
        proxy_pass http://localhost:your-port; # 将your-port替换为项目运行的端口
    }
}
  1. 保存并关闭配置文件。

  2. 检查Nginx配置是否正确:sudo nginx -t

  3. 重启Nginx以使更改生效:sudo systemctl restart nginx

现在,你的项目将通过域名访问,例如 http://your-domain.com
在这里插入图片描述
这里如果是用集合工具包运行的就更加方便了,直接在这里修改就可以将项目通过域名访问。

3. 配置ngrok进行内网穿透

在本地开发中,你需要让微信服务器能够访问你的本地项目。ngrok是一个用于创建安全内网穿透的工具。

这里我们用的是natapp的免费通道来测试,对于测试用的已经够用了,唯一不好的地方就是每次退出重启后域名是会重新分配的。麻烦是麻烦了点,但是免费啊,但是这里说明一下,大家有能力还是要支持一下官方的付费版的。

请按照以下步骤配置ngrok:

  1. 打开终端,导航到ngrok所在目录。

  2. 运行以下命令启动ngrok并映射到本地项目:

ngrok http your-port

这将创建一个隧道,并为你分配一个公开的域名,如 http://32012c52.ngrok.natapp.cn

  1. 确保 http://32012c52.ngrok.natapp.cn 可以访问你的本地项目。

4. 微信公众号配置

在微信公众号后台进行如下配置:

接口配置信息

  • URL:http://32012c52.ngrok.natapp.cn/xxxx(xxxx根据你的项目情况而定)
  • Token:自定义的令牌
  • AppID:你的微信公众号的AppID
  • AppSecret:你的微信公众号的AppSecret

网页授权获取用户基本信息

  • 域名:确保填写准确的 32012c52.ngrok.natapp.cn

5. 网页授权开发

网页授权允许你获取用户基本信息,包括用户的openid。在微信公众号开发中,这是一个重要的步骤。请按照以下步骤进行网页授权开发:

  1. 创建一个网页链接,用于用户授权。链接的格式如下:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=YOUR_APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect

其中,YOUR_APPID是你的微信公众号的AppID,REDIRECT_URI是你的网站的回调URL,snsapi_userinfo表示要获取用户基本信息。

  1. 用户点击链接后,将被重定向到微信登录页面,并要求用户授权。用户同意后,将被重定向回你的回调URL,同时附带一个code参数。

  2. 你的服务器接收到code参数后,可以使用它来获取用户的openid和其他信息。这通常需要发送HTTP请求到微信服务器,通过code来获取access_token,然后使用access_token来获取用户信息。

6. 测试JS SDK

如果你的项目中使用了微信的JS SDK,确保在微信公众号后台配置了安全域名,将域名准确地填写为 32012c52.ngrok.natapp.cn,没有多余的字符。然后,你可以测试JS SDK是否正常工作。

当然也可以用我们之前提到的在线测试公众号。

结语

通过本文提供的详细教程,你可以顺利进行微信公众号开发并在本地环境中进行调试。确保配置准确无误,并随时检查常见错误以确保开发顺利进行。龙哥祝你在微信公众号开发中取得成功!

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

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

相关文章

Compose Canvas基础

Compose Canvas基础 前言Canvas是什么drawxxx()绘制方法drawCircle 画圆不填充颜色设置线条的宽度 drawRect 画矩形drawPoints 画点pointMode drawOval 画椭圆drawLine 画线drawRoundRect 画圆角矩形drawArc 绘制弧形或扇形useCenter drawPath 画自定义图形 总结 前言 阅读本文…

【C++ 学习 ㉕】- 万字详解 unordered_map 和 unordered_set(哈希表的查找和容器的模拟实现)

目录 一、unordered_map 的基本介绍 二、unordered_set 的基本介绍 三、相关练习 3.1 - 在长度 2N 的数组中找出重复 N 次的元素 3.2 - 存在重复元素 3.3 - 两句话中的不常见单词 四、哈希表的查找 4.1 - 哈希表的基本概念 4.2 - 哈希函数的构造方法 4.3 - 处理冲突的…

用go获取IPv4地址,WLAN的IPv4地址,本机公网IP地址详解

文章目录 获取IPv4地址获取WLAN的IPv4地址获取本机公网IP地址 获取IPv4地址 下面的代码会打印出本机所有的IPv4地址。这个方法可能会返回多个IP地址,因为一台机器可能有多个网络接口,每个接口可能有一个或多个IP地址。 package mainimport ("fmt&…

阿里云服务器地域和可用区查询表_地域可用区大全

阿里云服务器地域和可用区有哪些?阿里云服务器地域节点遍布全球29个地域、88个可用区,包括中国大陆、中国香港、日本、美国、新加坡、孟买、泰国、首尔、迪拜等地域,同一个地域下有多个可用区可以选择,阿里云服务器网分享2023新版…

批量剪辑技巧:视频去色处理,让色彩焕然一新!

你是否曾经遇到过这样的问题:大量视频需要处理,但色彩总是达不到你的要求?现在,我们将向你展示如何通过批量剪辑技巧,轻松去除视频原色,让色彩焕然一新! 首先,我们要进入【视频剪辑…

##***

本文涵盖了一种名为"快速编写论文,课设辅助器"的智能人工智能(AI)系统。该系统旨在提供高效的论文和课程设计撰写辅助功能。通过利用先进的自然语言处理和机器学习算法,该系统能够自动生成与特定主题相关的内容&#xf…

苹果mac电脑securecrt下载 附securecrt破解文件

SecureCRT for Mac是一款由VanDyke Software公司开发的终端仿真软件,专为Mac OS X系统设计,用于提供安全SSH、Telnet和其他协议的远程访问和管理。它适用于各种操作系统和设备,如Windows、Linux和UNIX等,为Mac用户提供了广泛的连接…

嵌入式学习笔记(46) NandFlash的结构

9.2.1 Nand的单元组织:block与page(大页Nand与小页Nand) (1)Nand的页和以前讲过的块设备(尤其是硬盘)的扇区是类似的。扇区最早在磁盘中是512字节,后来也有些高级硬盘扇区不是512字节,而是1024…

高中生自学Python,这里给大家一些建议

高一学业压力比较重,如果你还是选择自学Python,每天可以抽出一两个小时来学习的话,也是可以的。下面是我给你的5点建议: 找浅显易懂,例子比较好的教程,从头到尾看下去。不要看很多本,专注于一本…

C/C++:[Error] ld returned 1 exit status 解决方案

好久没用了,今天写了会儿代码,各种BUg,emmmmmm 出现了很多次以下这个问题:[Error] ld returned 1 exit status 可能问题&解决方式: 常见的语法/单词拼写错误:常见的Main,printf,scanf等拼写错误 函数名或者声明有…

行与走,放慢自己,思考回顾。

为什么要出去行与走? 1、出去行与走看到祖国的大美风景,可以更深刻的认识到我们祖国的美好。 2、可以放空心情,排除掉积攒在写字楼内的方格子里面的郁闷和烦恼。 3、可以为自己的身体和心灵找一个安静和清澈净土。 4、在行和走之间&#…

GB28181学习(六)——实时视音频点播(数据传输部分)

GB28181系列文章: 总述:https://blog.csdn.net/www_dong/article/details/132515446 注册与注销:https://blog.csdn.net/www_dong/article/details/132654525 心跳保活:https://blog.csdn.net/www_dong/article/details/132796…

SpringCloud-Bus

接上文 SpringCloud-消息组件 1 注册Bus Bus需要基于一个具体的消息队列实现&#xff0c;比如RabbitMQ.还使用最开始的服务拆分项目&#xff0c;比如现在借阅服务的某个接口调用时&#xff0c;能给用户服务和图书服务发送一个通知。 首先父项目导入SpringCloud依赖 <depend…

MySQL数据库单表查询

素材: 表名: worker-- 表中字段均为中文&#xff0c;比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 varchar(10) NOT NULL DEFAULT 群…

力扣 -- 1027. 最长等差数列

解题步骤&#xff1a; 参考代码&#xff1a; class Solution { public:int longestArithSeqLength(vector<int>& nums) {int nnums.size();int ret2;unordered_map<int,int> hash;//这里可以先把nums[0]存进哈希表中&#xff0c;方便后面i从1开始遍历hash[num…

Python的函数

近期遇到了一个没怎么看懂的Python函数的形式。 def twoSum(self, nums: List[int], target: int) -> List[int]: 后来上网查了资料。

剑指offer——JZ35 复杂链表的复制 解题思路与具体代码【C++】

一、题目描述与要求 复杂链表的复制_牛客题霸_牛客网 (nowcoder.com) 题目描述 输入一个复杂链表&#xff08;每个节点中有节点值&#xff0c;以及两个指针&#xff0c;一个指向下一个节点&#xff0c;另一个特殊指针random指向一个随机节点&#xff09;&#xff0c;请对此链…

如何修改springboot项目启动时的默认图标?

如下所示为springboot项目启动时的默认图标&#xff0c;我们可以把它换成我们自己喜欢的图片 方法如下&#xff1a; 第一步&#xff1a;我们需要将图片放置当前项目的resources目录下 如下所示为我自定义的一张照片 第二步&#xff1a; 方法1:在application.properties文件中…

【数据结构】论如何拿捏快速排序?(含非递归)

目录 一&#xff0c;快速排序&#xff08;递归&#xff09; 1&#xff0c;快排思想 2&#xff0c;霍尔排序 3&#xff0c;挖坑法 4&#xff0c;前后指针法 5&#xff0c;快速排序优化 1&#xff0c;三数取中法选key 2&#xff0c;小区间优化 二&#xff0c;快速排序&a…

超大视频如何优雅切片

背景 有一次录屏产生了一个大小为33G的文件, 我想把他上传到B站, 但是B站最大只支持4G. 无法上传, 因此做了一个简单的探索. 质疑与思考 a. 有没有一个工具或一个程序协助我做分片呢? 尝试 a. 必剪 > 有大小限制, 添加素材加不进去(而且报错信息也提示的不对) b. PR &…