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. 每日一皮:多线程理想与现实的差距
  2. 【⛔C语言最熟悉的陌生人の你所不知道的scanf⛔】
  3. 前端学习(3320):undefine和null 3
  4. 多语言 获取当前语言
  5. 2012计算机科学排名,2012年美国研究生计算机科学专业排名
  6. Java中String做为synchronized同步锁
  7. C语言中字符串的处理方式(一)
  8. 批量关停azure vm_如何从Azure VM数据库运行本地SQL报表
  9. [翻译] 用 CSS 背景混合模式制作高级效果
  10. Cisdem DVD Burner for Mac(DVD光盘刻录软件)
  11. 怎样才能提取图片中的文字
  12. 51单片机——LED点阵屏
  13. 英语语法长难句——并列句
  14. 罪恶黑名单第一季/全集The Blacklist迅雷下载
  15. word图片不显示或显示不全
  16. 常用英语食品词汇- 蔬菜类
  17. day16re模块和面向对象
  18. FAST上网设置服务器未响应,fast路由器不能上网的解决方法
  19. Html —— 表白弹幕 特效(效果+代码)
  20. Cris 的Python笔记(十三):异常和文件处理

热门文章

  1. 决策树算法——ID3算法,C4.5算法
  2. ROS学习之路的整理
  3. 响铃:AWE2018只是“草船”,三星已成大屏电视“东风”
  4. CentOS7.9安装Nextcloud+ocDownloader+aria2使用Nextcloud网盘做离线下载服务器
  5. IOS 读二进制数据文件
  6. dos批处理脚本自动添加网络IP打印机-简单亲测可用
  7. 计算2个时间段的重叠天数
  8. 华为交换机修改concle密码
  9. Python将读取到的字符串文本数据转换成数字类型列表和数组
  10. Fluent 操作入门实例-从建模到计算结果可视化