1. 微信第三方平台的开发,第一步就是公众号的授权,授权成功后第三方凭条才能利用公众号的appid和token获得公众账号额信息,并代替公众账号完成一些功能。

2. 授权的流程,理论图

代码流程,

1》 首先在微信开放平台的官网进行微信第三方平台的开发认证

2》认证通过后,在微信开放平台创建第三方平台的实体,创建完成后才能有对应的appid和secret,用于开发

3》微信服务项第三方平台会推送信息,例如:进行授权、取消授权、更新授权后,但是这些信息都是加密的,所以要下载微信的解密工具,随后会上传至我的账号

4》在创建微信第三方平台时,需要填写加密的key,长度为43个字符,但是在jdk(我用的是jdk1.7)编译时,因为长度过长,会报异常,是因为jdk自己的安全机制对key的长度有限制,需要将限制取消,方法就是下载UnlimitedJCEPolicyJDK7.zip利用里面的jar包代替jdk安装目录下,我的是:C:\Java\jdk1.7.0_80\jre\lib\security里的两个jar包即可,压缩包会上传至我的账号

5》微信服务器的推送信息,是通过域名进行推送的并且不能指定端口号,所以要将微信第三方平台创建时填写的域名映射到开发的电脑上,端口为80.

6》编写微信第三方平台注册时填写的“授权事件接收URL”的方法,第三方平台注册成功后,微信服务器会每十分钟向该url推送一次

component_verify_ticket ,通过aes进行解密,获得ticket,我得获得ticket的方法

public void processAuthorizeEvent(HttpServletRequest request) {System.out.println("开始获取微信推送信息----------------------------");// 获得微信推送的参数String nonce = request.getParameter("nonce");String timestamp = request.getParameter("timestamp");String signature = request.getParameter("signature");String msgSignature = request.getParameter("msg_signature");try {if (!StringUtils.isNotBlank(msgSignature)) {return;// 微信推送给第三方开放平台的消息一定是加过密的,无消息加密无法解密消息}String component_token = prop.getProperty("component_token");boolean isValid = checkSignature(component_token, signature, timestamp, nonce);if (isValid) {StringBuilder sb = new StringBuilder();BufferedReader in = request.getReader();String line;while ((line = in.readLine()) != null) {sb.append(line);}// 微信推送的加密为信息String xml = sb.toString();// 参数String component_encodingaeskey = prop.getProperty("component_encodingaeskey");String component_appid = prop.getProperty("weixinThirdPart_appid");// 加密信息的解密工具类WXBizMsgCrypt pc = new WXBizMsgCrypt(component_token, component_encodingaeskey, component_appid);// 微信推送的加密信息,解密后的xmlxml = pc.decryptMsg(msgSignature, timestamp, nonce, xml);Document doc = DocumentHelper.parseText(xml);Element rootElt = doc.getRootElement();String type = rootElt.elementText("InfoType");if ("component_verify_ticket".equals(type)) {processAuthorizationEvent(rootElt);} else if ("unauthorized".equals(type)) {handleUnauthorized(rootElt);}System.out.println("type}}}}}}}}}}}}}}}" + type);}} catch (Exception e) {e.printStackTrace();}}

解密的方法

 public static boolean checkSignature(String token, String signature, String timestamp, String nonce) {boolean flag = false;if (signature != null && !signature.equals("") && timestamp != null && !timestamp.equals("") && nonce != null&& !nonce.equals("")) {String sha1 = "";String[] ss = new String[]{token, timestamp, nonce};Arrays.sort(ss);for (String s : ss) {sha1 += s;}sha1 = AddSHA1.SHA1(sha1);if (sha1.equals(signature)) {flag = true;}}return flag;}

7》获得ticket后,通过ticket获得微信第三方平台开发的token,其余的步骤按照微信开放平台尽心即可,注意的是,调用微信的接口时

微信第三方平台授权流程- java相关推荐

  1. 微信第三方平台-授权流程经验分享

    原文地址: www.jianshu.com/p/67836ffa9- 在做微信第三方平台开发的时候,虽然授权的技术实现流程比较简单,但是相对于一个key直接集成的一些其他的服务来说,还是有一些步骤,过 ...

  2. 微信第三方平台授权流程说明

    1.消息验证token和消息加解密key(encodingAesKey) encodingAesKey长度固定为 43 个字符,从 a-z,A-Z,0-9 共 62 个字符中选取.由开发者在创建第三方 ...

  3. 用微信第三方平台授权小程序业务

    如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 本文章转自php中文网:http://www.php.cn/weixin-kaifa-4069 ...

  4. 微信第三方平台开发流程和总结

    微信第三方平台开发流程和总结 创建第三方平台 1).在微信开放平台-管理中心-第三方平台中创建第三方平台账号.创建第三方平台 2).选择"平台型服务商类型"创建第三方平台.填写第三 ...

  5. 关于微信第三方平台授权61004:access clientip is not registered requestIP

    关于微信第三方平台授权61004:access clientip is not registered requestIP 这个问题让我难受了2个小时,最后总结下问题: IP白名单 授权的服务器一定要添 ...

  6. 微信第三方平台授权时域名问题

    最近在处理微信第三方平台的问题,在授权的时候总是提示"请确认授权入口页所在域名,与授权后回调页所在域名相同,并且,此两者都必须与申请第三方平台时填写的授权发起页域名相同." 如提示 ...

  7. 微信开放平台_第三方平台授权流程_验证票据

    一.验证票据 1.1 官方说明: 验证票据(component_verify_ticket):在第三方平台创建审核通过后,微信服务器会向其"授权事件接收URL" 每隔 10 分钟以 ...

  8. 微信第三方平台开发流程

    一个微信公众号菜鸟的摸索之路 准备工作 注册申请开发者账号 开发者资质认证 附上地址:https://open.weixin.qq.com 创建第三方平台 进入管理中心->创建第三方平台 这里解 ...

  9. 微信第三方平台授权(第三方)

    本人小菜鸟一只,为了自我学习和交流PHP(jquery,linux,lamp,shell,javascript,服务器)等一系列的知识,小菜鸟创建了一个群.希望光临本博客的人可以进来交流.寻求共同发展 ...

最新文章

  1. u一点·料:阿里巴巴1688ued体验设计践行之路. 导读
  2. 使用 vscode 调试前端代码
  3. IOS应用管理学习,进阶,涉及字典转模型,工厂方法,面向对象思想,页面布局等
  4. [Python]linux自己定义Python脚本命令
  5. DNS域传输漏洞利用总结
  6. gauge 运行其他spec_Gem5(SE模式)上运行SPEC2017教程
  7. 数字图像处理(五)——形态学
  8. API(应用程序接口)是什么
  9. 使用Oracle Wrap工具加密你的代码
  10. Linux Tun/Tap网口(/dev/net/tun)的读写方法
  11. scrollLeft/scrollTop,offsetLeft/offsetTop,clientLeft/clientTop
  12. 应试教育——人性的扼杀
  13. 停止kibana服务
  14. 超详细的人工智能专家路线图
  15. android键盘顶起布局原理,android如何把键盘弹出不影响布局?
  16. RTOS系统的UCOS
  17. @Autowired @Resource @Qualifier的区别
  18. intel主板bios设置方法
  19. 注意营养,这可能是目前最好的离线下载方式
  20. HTML列表标签及自定义列表的应用

热门文章

  1. 汽车之家移动主App服务端架构变迁
  2. igraph基本用法
  3. redis集群报错,(error) MOVED 15495 127.0.0.1:7003
  4. php记录访问者ip和次数,一个能对访问者进行编号、记录访问次数、IP、时间的统计制作实例...
  5. 深圳市威视爱普手术示教系统
  6. 如何通过echarts绘制北京市地图并可以添加标记并可点击
  7. JAVA格式代码出现两次_NullPointerException使用JMockit测试Mocked java.io.File两次
  8. 关于H5中的Canvas API的探索
  9. 智慧书-永恒的处世经典格言:201-240
  10. 关于智能水表背后的“节水效应”