微信公众号开发者模式登录(微信公众帐号开发教程)
微信公众号开发者模式登录(微信公众帐号开发教程)
2024-06-27 04:53:30  作者:许至君  网址:https://m.xinb2b.cn/know/hly366808.html

编辑模式与开发模式

微信公众帐号申请成功后,要想接收处理用户的请求,就必须要在“高级功能”里进行配置,点击“高级功能”,将看到如下界面:

微信公众号开发者模式登录(微信公众帐号开发教程)(1)

从上图中可以看到,高级功能包含两种模式:编辑模式和开发模式,并且这两种模式是互斥关系,即两种模式不能同时开启。那两种模式有什么区别呢?作为开发人员到底要开启哪一种呢?

编辑模式:主要针对非编程人员及信息发布类公众帐号使用。开启该模式后,可以方便地通过界面配置“自定义菜单”和“自动回复的消息”。

开发模式:主要针对具备开发能力的人使用。开启该模式后,能够使用微信公众平台开放的接口,通过编程方式实现自定义菜单的创建、用户消息的接收/处理/响应。这种模式更加灵活,建议有开发能力的公司或个人都采用该模式。

启用开发模式(上)

微信公众帐号注册完成后,默认开启的是编辑模式。那么该如何开启开发模式呢?操作步骤如下:

1)点击进入编辑模式,将右上角的编辑模式开关由“开启”切换到“关闭”,如下图所示:

2)点击高级功能进入到开发模式,将右上角的开发模式开关由“关闭”切换到“开启”,但在切换时会遇到如下提示:

提示需要我们先成为开发者,才能开启开发模式。那就先点击下图所示的“成为开发者”按钮:

如果提示资料不全,那就先补齐资料再回来继续操作。需要补全的资料有公众帐号头像、描述和运营地区。

微信公众号开发者模式登录(微信公众帐号开发教程)(2)

待资料补全后,再次点击“成为开发者”,这时将看到接口配置信息界面,如下图所示:

微信公众号开发者模式登录(微信公众帐号开发教程)(3)

这里需要填写URL和Token两个值。URL指的是能够接收处理微信服务器发送的GET/POST请求的地址,并且是已经存在的,现在就能够在浏览器访问到的地址,这就要求我们先把公众帐号后台处理程序开发好(至少应该完成了对GET请求的处理)并部署在公网服务器上。Token后面会详细说明。

也就是说要完成接口配置,只需要先完成微信服务器的GET请求处理就可以?是的。 那这是为什么呢?因为这是微信公众平台接口中定义的。具体请参考API文档-消息接口-消息接口指南中的网址接入部分。点此进入。

微信公众号开发者模式登录(微信公众帐号开发教程)(4)

上面写的很清楚,其实你只要能理解上面在说什么就OK了,至于怎么编写相关代码,我已经帮你完成了,请继续往下看。

创建公众帐号后台接口程序

创建一个Java Web工程,并新建一个能够处理请求的servlet,命名任意,我在这里将其命名为org.liufeng.course.servlet.CoreServlet,代码如下:

package org.liufeng.course.servlet; import java.io.IOException;import java.io.PrintWriter; import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletrequest;import javax.servlet.http.HttpServletResponse; import org.liufeng.course.util.SignUtil; public class CoreServlet extends HttpServlet {private static final long serialVersionUID = 4440739483644821986L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 微信加密签名String signature = request.getParameter("signature");// 时间戳String timestamp = request.getParameter("timestamp");// 随机数String nonce = request.getParameter("nonce");// 随机字符串String echostr = request.getParameter("echostr"); PrintWriter out = response.getWriter();// 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败if (SignUtil.checkSignature(signature, timestamp, nonce)) {out.print(echostr);}out.close();out = null;} public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO 消息的接收、处理、响应} }

可以看到,代码中只完成了doGet方法,它的作用正是确认请求是否来自于微信服务器;而doPost方法不是我们这次要讲的内容,并且完成接口配置也不需要管doPost方法,就先空在那里。在doGet方法中调用了org.liufeng.course.util.SignUtil.checkSignature方法,SignUtil.java的实现如下:

package org.liufeng.course.util; import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Arrays; public class SignUtil {// 与接口配置信息中的Token要一致private static String token = "weixinCourse"; public static boolean checkSignature(String signature, String timestamp, String nonce) {String[] arr = new String[] { token, timestamp, nonce };// 将token、timestamp、nonce三个参数进行字典序排序Arrays.sort(arr);StringBuilder content = new StringBuilder();for (int i = 0; i < arr.length; i ) {content.append(arr[i]);}MessageDigest md = null;String tmpStr = null; try {md = MessageDigest.getInstance("SHA-1");// 将三个参数字符串拼接成一个字符串进行sha1加密byte[] digest = md.digest(content.toString().getBytes());tmpStr = byteToStr(digest);} catch (NoSuchAlgorithmException e) {e.printStackTrace();} content = null;// 将sha1加密后的字符串可与signature对比,标识该请求来源于微信return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;} private static String byteToStr(byte[] byteArray) {String strDigest = "";for (int i = 0; i < byteArray.length; i ) {strDigest = byteToHexStr(byteArray[i]);}return strDigest;} private static String byteToHexStr(byte mByte) {char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };char[] tempArr = new char[2];tempArr[0] = Digit[(mByte >>> 4) & 0x0F];tempArr[1] = Digit[mByte & 0x0F]; String s = new String(tempArr);return s;}}

这里唯一需要注意的就是SignUtil类中的成员变量token,这里赋予什么值,在接口配置信息中的Token就要填写什么值,两边保持一致即可,没有其他要求,建议用项目名称、公司名称缩写等,我在这里用的是项目名称weixinCourse。最后再来看一下web.xml中,CoreServlet是怎么配置的,web.xml中的配置代码如下:

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><servlet><servlet-name>coreServlet</servlet-name><servlet-class>org.liufeng.course.servlet.CoreServlet</servlet-class></servlet> <!-- url-pattern中配置的/coreServlet用于指定该Servlet的访问路径 --><servlet-mapping><servlet-name>coreServlet</servlet-name><url-pattern>/coreServlet</url-pattern></servlet-mapping> <welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>

到这里,所有编码都完成了,就是这么简单。接下来就是将工程发布到公网服务器上,如果没有公网服务器环境,可以去了解下BAE、SAE或阿里云。发布到服务器上后,我们在浏览器里访问CoreServlet,如果看到如下界面就表示我们的代码没有问题:

啊,代码都报空指针异常了还说证明没问题?那当然了,因为直接在地址栏访问coreServlet,就相当于提交的是GET请求,而我们什么参数都没有传,在验证的时候当然会报空指针异常。

接下来,把coreServlet的访问路径拷贝下来,再回到微信公众平台的接入配置信息界面,将coreServlet的访问路径粘贴到URL中,并将SignUtil类中指定的token值weixinCourse填入到Token中,填写后的结果如下图所示:

微信公众号开发者模式登录(微信公众帐号开发教程)(5)

我在写这篇教程的时候是使用的BAE环境,如果想学习微信公众帐号开发又没有公网服务器环境的,建议可以试试,注册使用都很方便,如果有问题我们还可以交流。

接着点击“提交”,如果程序写的没问题,并且URL、Token都填写正确,可以在页面最上方看到“提交成功”的提示,并会再次跳转到开发模式设置界面,而且能够看到“你已成为开发者”的提示,如下图所示:

微信公众号开发者模式登录(微信公众帐号开发教程)(6)

启用开发模式(下)

这个时候就已经成为开发者了,百般周折啊,哈哈,到这里还没有完哦,还有最后一步工作就是将开发模式开启。将右上角的开发模式开关由“关闭”切换到“开启”,如下图所示:

微信公众号开发者模式登录(微信公众帐号开发教程)(7)

微信公众号开发者模式登录(微信公众帐号开发教程)(8)

到这里,接口配置、开发模式的开启就都完成了,内容也就讲到这里。

  • 孟美岐聊天全记录(孟美岐国外旅游完直接回家聚餐被骂)
  • 2024-06-27孟美岐国外旅游完直接回家聚餐被骂2月1日晚,火箭少女101中的一位成员孟美岐突然在社交平台分享了自己的假日动态,没想到却引起了网上接连不断的争议孟美岐在社交平台发文称自己这次回家刚好赶上姥姥80岁大寿,给姥姥发了红包后,姥姥露出了开。
  • 适合家内种植的菜(家有空地推荐5种冷门菜)
  • 2024-06-27家有空地推荐5种冷门菜导读:家有空地推荐5种冷门菜,管理粗放不用打农药,还能观赏产量也高“清明前后,种瓜点豆!”如今已经是3月底了,马上就要迎来清明节了而这个时候雨水多,气温也开始回升了,正是播种的好时候那今年你家打算种什。
  • 陶瓷工艺品行业(陶瓷行业名企动态)
  • 2024-06-27陶瓷行业名企动态方向家居:美学馆启幕盛典暨品牌发布会举办7月6日,方向家居美学馆启幕盛典暨品牌发布会在中国·佛山中国陶瓷总部方向家居总部召开方向企业董事长梁维铭表示,我们致力于把方向家居打造成以设计驱动的品牌,以全屋。
  • 成考和自考有何不同(自考和成考的区别是什么)
  • 2024-06-27自考和成考的区别是什么在“人丑就要多读书”的时代肚子里没点墨水都不好出门了喂,你们最近good吗?这么久没见了,出来play啊?一起米西米西步入社会后才开始感叹当时年少轻狂读书的日子吃吃喝喝浑浑噩噩没混出个文凭来就想去社会。
  • 丰田全新suv12万起(丰田又一亲民SUV12.98万起)
  • 2024-06-27丰田又一亲民SUV12.98万起提及日系汽车品牌,多数读者都会想起丰田,无论是选择轿车还是SUV,甚至是MPV车型,丰田品牌都可以给你一个很好的选择但是,看似产品阵营十分完善的丰田,还是没有放弃推出新产品,今天咱们的主角就是一款刚刚。
  • 如何关掉cad的捕捉栅格(教你如何快速关掉)
  • 2024-06-27教你如何快速关掉显示删格:单击CAD屏幕下方的【删格】按钮右键单击【栅格】按钮,选择【设置】,构选【启用栅格】就可以显示删了,并可以在该设置面板中设置删格的水平距离和竖直距离设置删后的显示结果如果需要快速关闭或显示删。
  • 自己摘桑葚的方法(什么摘桑葚呢)
  • 2024-06-27什么摘桑葚呢采摘时可以带一个篮子装桑葚,桑葚通常长在桑树的根部,采摘时要将树叶扒开才能看到,将桑葚的根轻轻一拽就能将它摘下来,摘桑葚时下手不能太重,不然会把桑椹的汁水挤出来采摘桑葚的时间是春季,它会在4-6月份的。
  • 快递行业满意度(快递满意度排名出炉)
  • 2024-06-27快递满意度排名出炉在1月14日举行的一季度例行新闻发布会上,国家邮政局市场监管司副司长边作栋发布了2020年快递服务满意度调查和时限测试结果边作栋表示,“十三五”期间,快递服务总体满意度和公众满意度分别实现四连升、五连。
  • 10部你不能错过的校园青春电影(值得追忆的6部高分校园电影)
  • 2024-06-27值得追忆的6部高分校园电影1.《摇摆少女》影片讲述了,炎热的暑假,女生们还要在学校补课,早就坐不住的她们自动请缨去送午餐给为棒球队打气的管乐队一路上嘻嘻哈哈的她们快到终点才发现因为天气炎热饭盒早就变坏了,而管乐队队员毫不知情地。
  • 视频号入口在哪里(视频号制作视频步骤)
  • 2024-06-27视频号制作视频步骤今日,视频号机构管理平台上线据了解,视频号机构账号主要面向MCN机构开放注册MCN机构注册后,可通过该平台签约并管理创作者更重要的是,锌榜独家获得的官方消息称,机构可免费申请视频号机构管理平台资格,也。
  • 25岁男子曝妻子出轨(杭州丈夫暴怒浴室灯一亮)
  • 2024-06-27杭州丈夫暴怒浴室灯一亮本文为杭州交通91.8原创稿件记者:徐冉/通讯员:童江龙11月28日晚,杭州余杭公安崇贤派出所接到刘女士报警称:有人偷窥自己洗澡接到报警后,民警立即赶至现场刘女士丈夫高先生告诉民警,他和妻子租住在崇贤。
  • 深圳外国语学校龙岗分校好吗(深圳外国语学校)
  • 2024-06-27深圳外国语学校1月17日上午,在深圳外国语学校(龙岗)国际部第二届新春庙会上,校长刘佳宣布,去年11月深圳外国语学校(龙岗)国际部收到国际文凭组织(IBO)正式通知,成为IBPYP(国际文凭组织小学项目)课程授权学。