微信第三方平台授权流程- java
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相关推荐
- 微信第三方平台-授权流程经验分享
原文地址: www.jianshu.com/p/67836ffa9- 在做微信第三方平台开发的时候,虽然授权的技术实现流程比较简单,但是相对于一个key直接集成的一些其他的服务来说,还是有一些步骤,过 ...
- 微信第三方平台授权流程说明
1.消息验证token和消息加解密key(encodingAesKey) encodingAesKey长度固定为 43 个字符,从 a-z,A-Z,0-9 共 62 个字符中选取.由开发者在创建第三方 ...
- 用微信第三方平台授权小程序业务
如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 本文章转自php中文网:http://www.php.cn/weixin-kaifa-4069 ...
- 微信第三方平台开发流程和总结
微信第三方平台开发流程和总结 创建第三方平台 1).在微信开放平台-管理中心-第三方平台中创建第三方平台账号.创建第三方平台 2).选择"平台型服务商类型"创建第三方平台.填写第三 ...
- 关于微信第三方平台授权61004:access clientip is not registered requestIP
关于微信第三方平台授权61004:access clientip is not registered requestIP 这个问题让我难受了2个小时,最后总结下问题: IP白名单 授权的服务器一定要添 ...
- 微信第三方平台授权时域名问题
最近在处理微信第三方平台的问题,在授权的时候总是提示"请确认授权入口页所在域名,与授权后回调页所在域名相同,并且,此两者都必须与申请第三方平台时填写的授权发起页域名相同." 如提示 ...
- 微信开放平台_第三方平台授权流程_验证票据
一.验证票据 1.1 官方说明: 验证票据(component_verify_ticket):在第三方平台创建审核通过后,微信服务器会向其"授权事件接收URL" 每隔 10 分钟以 ...
- 微信第三方平台开发流程
一个微信公众号菜鸟的摸索之路 准备工作 注册申请开发者账号 开发者资质认证 附上地址:https://open.weixin.qq.com 创建第三方平台 进入管理中心->创建第三方平台 这里解 ...
- 微信第三方平台授权(第三方)
本人小菜鸟一只,为了自我学习和交流PHP(jquery,linux,lamp,shell,javascript,服务器)等一系列的知识,小菜鸟创建了一个群.希望光临本博客的人可以进来交流.寻求共同发展 ...
最新文章
- 每日一皮:多线程理想与现实的差距
- 【⛔C语言最熟悉的陌生人の你所不知道的scanf⛔】
- 前端学习(3320):undefine和null 3
- 多语言 获取当前语言
- 2012计算机科学排名,2012年美国研究生计算机科学专业排名
- Java中String做为synchronized同步锁
- C语言中字符串的处理方式(一)
- 批量关停azure vm_如何从Azure VM数据库运行本地SQL报表
- [翻译] 用 CSS 背景混合模式制作高级效果
- Cisdem DVD Burner for Mac(DVD光盘刻录软件)
- 怎样才能提取图片中的文字
- 51单片机——LED点阵屏
- 英语语法长难句——并列句
- 罪恶黑名单第一季/全集The Blacklist迅雷下载
- word图片不显示或显示不全
- 常用英语食品词汇- 蔬菜类
- day16re模块和面向对象
- FAST上网设置服务器未响应,fast路由器不能上网的解决方法
- Html —— 表白弹幕 特效(效果+代码)
- Cris 的Python笔记(十三):异常和文件处理
热门文章
- 决策树算法——ID3算法,C4.5算法
- ROS学习之路的整理
- 响铃:AWE2018只是“草船”,三星已成大屏电视“东风”
- CentOS7.9安装Nextcloud+ocDownloader+aria2使用Nextcloud网盘做离线下载服务器
- IOS 读二进制数据文件
- dos批处理脚本自动添加网络IP打印机-简单亲测可用
- 计算2个时间段的重叠天数
- 华为交换机修改concle密码
- Python将读取到的字符串文本数据转换成数字类型列表和数组
- Fluent 操作入门实例-从建模到计算结果可视化