爱美容
当前位置: 首页 美容百科

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

时间:2023-07-13 作者: 小编 阅读量: 1 栏目名: 美容百科

开启该模式后,能够使用微信公众平台开放的接口,通过编程方式实现自定义菜单的创建、用户消息的接收/处理/响应。启用开发模式(上)微信公众帐号注册完成后,默认开启的是编辑模式。那就先点击下图所示的“成为开发者”按钮:如果提示资料不全,那就先补齐资料再回来继续操作。待资料补全后,再次点击“成为开发者”,这时将看到接口配置信息界面,如下图所示:这里需要填写URL和Token两个值。

编辑模式与开发模式

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

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

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

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

启用开发模式(上)

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

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

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

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

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

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

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

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

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

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

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

  1. package org.liufeng.course.servlet;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletrequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. import org.liufeng.course.util.SignUtil;
  9. /**
  10. * 核心请求处理类
  11. *
  12. * @author liufeng
  13. * @date 2013-05-18
  14. */
  15. public class CoreServlet extends HttpServlet {
  16. private static final long serialVersionUID = 4440739483644821986L;
  17. /**
  18. * 确认请求来自微信服务器
  19. */
  20. public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  21. // 微信加密签名
  22. String signature = request.getParameter("signature");
  23. // 时间戳
  24. String timestamp = request.getParameter("timestamp");
  25. // 随机数
  26. String nonce = request.getParameter("nonce");
  27. // 随机字符串
  28. String echostr = request.getParameter("echostr");
  29. PrintWriter out = response.getWriter();
  30. // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
  31. if (SignUtil.checkSignature(signature, timestamp, nonce)) {
  32. out.print(echostr);
  33. }
  34. out.close();
  35. out = null;
  36. }
  37. /**
  38. * 处理微信服务器发来的消息
  39. */
  40. public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  41. // TODO 消息的接收、处理、响应
  42. }
  43. }

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

  1. package org.liufeng.course.util;
  2. import java.security.MessageDigest;
  3. import java.security.NoSuchAlgorithmException;
  4. import java.util.Arrays;
  5. /**
  6. * 请求校验工具类
  7. *
  8. * @author liufeng
  9. * @date 2013-05-18
  10. */
  11. public class SignUtil {
  12. // 与接口配置信息中的Token要一致
  13. private static String token = "weixinCourse";
  14. /**
  15. * 验证签名
  16. *
  17. * @param signature
  18. * @param timestamp
  19. * @param nonce
  20. * @return
  21. */
  22. public static boolean checkSignature(String signature, String timestamp, String nonce) {
  23. String[] arr = new String[] { token, timestamp, nonce };
  24. // 将token、timestamp、nonce三个参数进行字典序排序
  25. Arrays.sort(arr);
  26. StringBuilder content = new StringBuilder();
  27. for (int i = 0; i < arr.length; i) {
  28. content.append(arr[i]);
  29. }
  30. MessageDigest md = null;
  31. String tmpStr = null;
  32. try {
  33. md = MessageDigest.getInstance("SHA-1");
  34. // 将三个参数字符串拼接成一个字符串进行sha1加密
  35. byte[] digest = md.digest(content.toString().getBytes());
  36. tmpStr = byteToStr(digest);
  37. } catch (NoSuchAlgorithmException e) {
  38. e.printStackTrace();
  39. }
  40. content = null;
  41. // 将sha1加密后的字符串可与signature对比,标识该请求来源于微信
  42. return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;
  43. }
  44. /**
  45. * 将字节数组转换为十六进制字符串
  46. *
  47. * @param byteArray
  48. * @return
  49. */
  50. private static String byteToStr(byte[] byteArray) {
  51. String strDigest = "";
  52. for (int i = 0; i < byteArray.length; i) {
  53. strDigest= byteToHexStr(byteArray[i]);
  54. }
  55. return strDigest;
  56. }
  57. /**
  58. * 将字节转换为十六进制字符串
  59. *
  60. * @param mByte
  61. * @return
  62. */
  63. private static String byteToHexStr(byte mByte) {
  64. char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
  65. char[] tempArr = new char[2];
  66. tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
  67. tempArr[1] = Digit[mByte & 0X0F];
  68. String s = new String(tempArr);
  69. return s;
  70. }
  71. }

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

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  5. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  6. <servlet>
  7. <servlet-name>coreServlet</servlet-name>
  8. <servlet-class>
  9. org.liufeng.course.servlet.CoreServlet
  10. </servlet-class>
  11. </servlet>
  12. <!-- url-pattern中配置的/coreServlet用于指定该Servlet的访问路径 -->
  13. <servlet-mapping>
  14. <servlet-name>coreServlet</servlet-name>
  15. <url-pattern>/coreServlet</url-pattern>
  16. </servlet-mapping>
  17. <welcome-file-list>
  18. <welcome-file>index.jsp</welcome-file>
  19. </welcome-file-list>
  20. </web-app>

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

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

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

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

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

启用开发模式(下)

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

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

    推荐阅读
  • 怎么样让眼睛变大的最有效的方法(5种方法让你的眼睛变大)

    使用时先轻刷一层睫毛膏,趁睫毛膏尚未干掉时,将增长纤维的刷头转出,并将刷头上的白色细致纤维轻轻以滚动方式附着每根睫毛的尖端部位。再重复刷上黑头睫毛膏,电眼效果max。

  • 双减带给老师的挑战和机遇(双减之后教师面临的)

    7月24日,中共中央办公厅、国务院办公厅印发了《关于进一步减轻义务教育阶段学生作业负担和校外培训负担的意见》。面对教师陡然增加的负担,教育部相关负责人回应,将继续督促指导各地将教师减负工作同优化教师资源配置、深化教育教学改革等有机结合起来,健全教师减负长效机制,推动教师减负工作取得实效。“双减”政策明确提出,要构建教育良好生态,有效缓解家长焦虑情绪,促进学生全面发展、健康成长。

  • 我的世界橡胶甘蔗怎么杂交 我的世界粘性甘蔗种子

    杂交前需要合成作物架,用4个木棍合成,摆放成左右两列,合成2个作物架,由于杂交的几率比较低,所以需要准备多点作物架。拿着作物架在,每两个种了甘蔗的耕地的中间,放上两个作物架,作物架成十字交叉,代表此时在进行杂交。进行一段长时间的等待,等待甘蔗长大,等待杂交成功,注意杂交的地方很容易长杂草,如果长了杂草请尽快打掉,否则整个耕地都会蔓延杂草,需要重新杂交。

  • 娃哈哈新媒体营销策划(第13届娃哈哈营销策划大赛重磅来袭)

    为了丰富大学生的课余生活,引导和培养大学生创新精神和实践能力,4月23日18时30分,第十三届娃哈哈全国大学生营销策划大赛启动仪式于南宁职业技术学院大礼堂顺利举行。娃哈哈营销大赛为大学生提供了一个广阔的实践平台,推动教育与实践相结合,使同学们的创新意识得到激发。在此预祝娃哈哈营销策划大赛取得圆满成功,也祝本次参赛的团队都能够在比赛中取得佳绩!

  • 狮鹫怎么驯服(方舟生存进化手游狮鹫驯服技巧攻略)

    接下来我们就一起去研究一下吧!狮鹫怎么驯服方舟生存进化中狮鹫是高傲的守护兽,想要驯服狮鹫并不容易,必须获得狮鹫的尊重,这并不算容易的事,下面就来介绍一下怎么驯服狮鹫的方法吧。第一种方法:人物等级85级以上,并且不是可以获得全部尊重的!比如85级的,可能只能获取低等级狮鹫的尊重!

  • tabata间歇性训练的方法(什么是Tabata锻炼)

    各种研究得出结论,Tabata锻炼对健康有很多好处。有时您可能会达到最大强度,这可能会因肌肉松懈而导致受伤每周最多进行3-4次Tabata训练。Tabata锻炼以多种方式改善健康。此外,心脏病患者在开始Tabata锻炼之前还应听取医生的建议。在没有科学证据的情况下,对原始Tabata版本的修改可能弊大于利。人们可能会选择Tabata只是为了减肥,这不是它的实际用途。与传统HIIT相比,Tabata的强度水平更高,恢复时间更短。

  • s10和s9有什么区别(s10和s9有什么区别瑞思迈)

    vivoS9电池容量4000mAh,配置33W闪充。vivo官方宣布vivoS10系列于2021年7月15日正式发布,该手机代言人有Lisa、蔡徐坤、刘昊然。2021年7月15日,vivo召开了S10系列发布会,会上发布了新一代自拍旗舰vivoS10系列,其vivoS10系列依然采用了前置4400万像素AF双摄设计,仍然支持105度超广角,还有前置微缝式双柔光灯。

  • 专业版微博怎么设置(其实很简单)

    接下来我们就一起去了解一下吧!专业版微博怎么设置需要认证过才能成为专业版。专业版微博是为企业和机构定制的微博。新浪微博企业版是我们为企业、机构用户量身打造的服务平台。它具有更丰富的个性化页面展示功能设置,更精准的数据分析服务,以及更高效的沟通管理后台。我们期待新浪微博企业版能够帮助企业更便捷地与目标用户进行互动沟通,提升营销效果转化,挖掘更多商业机会。

  • 变速箱油到底多久换一次呢(变速箱油多久更换一次)

    如果需要更换变速箱油,查看用户的保养手册上如果有明确的更换周期,按照规定换油。如果变速箱油是终身免维护的,也一样要引起重视,终身免维护并不意味着变速箱油一直不用换。其实变速箱油不像机油那么黑,相比于机油甚至更为干净一点。所以车主千万不要忽略变速箱油,如果过长时间不更换,也会对变速箱造成一定的损伤,而且一些汽车的变速箱比发动机还要昂贵,修一次可能得要好几万元。

  • 恐惧症会遗传吗 幽闭恐惧症会遗传吗

    恐惧症是发病率非常高的一种心理疾病,而有许多患者并没有得到有效的治疗。导致恐惧症的因素恐惧症是各种因素的共同作用。恐惧症的典型症状是恐怖发作,并伴有强烈的生理反应。尽管患者知道这种恐惧是不合理的,但是没法控制。研究表明,在100名患者中40名患者可以彻底治疗,基本上没有什么后遗症。所以一定要及早治疗,效果好,造成的危害也小。