sae搭建java微信开发_微信公众号php开发接口配置token验证失败 sae - CSDN
  • 微信开发实战(4)—URL、Token认证、java源码、免费新浪SAE部署 上篇文章概要介绍了微信公众号开发的原理,偏重于讲解理论。 本篇文章通过Java web应用实现微信公众号的URL、Token认证。并部署到免费的...

    微信开发实战(4)—URL、Token认证、java源码、免费新浪SAE部署


    上篇文章概要介绍了微信公众号开发的原理,偏重于讲解理论。

    本篇文章通过Java web应用实现微信公众号的URL、Token认证。并部署到免费的新浪SAE服务器上,轻松教你实现公众号成为开发者号。


    一、URL、Token接口说明

    URL和Token接口的相关说明的详细内容可以参考接口文档。

    这里概要说明一下,就三步:

    1、填写服务器配置

        上篇提到我们需要一个公网服务器,介绍使用免费的新浪SAE云服务器。

        开发Java web应用并部署,提供URL和Token。填写到微信平台对应的接口配置中。


    2、验证服务器地址的有效性

        主要通过sha1进行加密认证,详见源码。


    3、依据接口文档实现业务逻辑

        认证通过之后,URL就作为开发者服务器与微信服务器之间互动通信的桥梁。在后面一篇文章介绍。


    二、java web应用提供URL和Token

    windows环境

    2.1,软件相关版本:

    JDK1.7+;

    链接:http://pan.baidu.com/s/1o7EFjuE

    密码:kr03

    Tomcat 7;

    链接:http://pan.baidu.com/s/1qYTe0mK

    密码:lg2w

    SpringMVC4.1 + Freemarker2.3 (目前还没涉及数据库)


    2.2,开发工具:

    eclipse

    链接:http://pan.baidu.com/s/1jH9xDf4

    密码:i11y


    2.3,javaweixin

    下载地址(包括war包和源码)

    链接:http://pan.baidu.com/s/1cGFNbw

    密码:eikn


    2.4,源码结构及说明


    1,主要技术是spring + freemarker ,目前还未涉及到数据库,但是 lib 包中是包含 mybatis 的jar包,后面文章涉及数据库(mysql)就会用到。


    2,目前没有使用maven进行项目构建,后期会使用。


    3,目前只是实现了URL和Token认证功能。

    参考WxApiController.java文件


    4,项目导入eclipse,并在tomcat中启动之后,访问http://ip:port/javaweixin,成功显示如下:



    三、新浪SAE部署

    访问新浪sae:http://www.sinacloud.com


    3.1,创建云应用SAE

    动图如下:




    3.2,配置二级域名,创建应用,上传war包

    动图如下:



    3.3,访问链接

    访问:http://1.javaweixincoder10.applinzi.com/

    成功界面如下:



    四、配置开发者账号

    4.1,新浪SAE提供的URL和Token:

    URL(域名换成开发者自己的)

    http://1.javaweixincoder10.applinzi.com/wxapi/message.html


    Token(详见WxApiController.java,开发者可以修改)

    javaweixinToken


    4.2,登录公众号测试

    将4.1中的URL和Token填写到 接口配置信息 中,点击提交即可!


    恭喜你,成功了!!!


    展开全文
  • 1 微信公众申请 2 sae python测试 3 微信yan

    闲来无聊用一堆的免费工具搭建了一个微信公众号(订阅号),后台服务采用sinaapp的sae,优点就是不要钱!

    免费,python、java都有,但是java太贵,java学生党果断选择python,就当学习了。

    本文写的比较粗略,只是一些自己搭建时容易出错的地方

    更详细的教程请参见http://www.nilday.com/%E5%88%A9%E7%94%A8sae%E6%90%AD%E5%BB%BA%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%B9%B3%E5%8F%B0%EF%BC%88%E4%B8%80%EF%BC%89web-py%E5%AE%9E%E7%8E%B0%E7%9A%84sae-hello-world/

    1 微信公众申请

    官网申请就可以,一开始启用编辑模式

    2 sae python测试

    sinaapp建立一个简单python应用

    3 微信身份验证部分

    编写好服务端后,进入微信后台配置url、token

    4微信被动回复

    4.1格式

    要注意的就是格式,包括“__”(两条下滑线)以及tab缩进,泪的教训啊。。

    4.2 debug以及日志

    在线编辑代码的时候,由于没有控制台,可通过sae的日志输出。


    可以在代码中输出log


    展开全文
  • 微信公众号的开发,其实可以使用多种语言,根据你自己的具体情况,php、java、jsp、asp都可以,但php 是用的最多的,官方给的实例demo也是php的。 但是这次,我打算使用python,因为Python开发,一个是代码简洁,...

    一、简单介绍:

    微信公众号的开发,其实可以使用多种语言,根据你自己的具体情况,php、java、jsp、asp都可以,但php 是用的最多的,官方给的实例demo也是php的。

    但是这次,我打算使用python,因为Python开发,一个是代码简洁,而且也没有什么局限性,使用Python的话,可以灵活的部署一些爬虫类程序,和用户交互起来也会比较方便。

    二、资源:

    使用的工具,python,新浪SAE平台,微信的公众平台。

    微信公众平台:http://mp.weixin.qq.com

    新浪SAE:http://sae.sina.com.cn/

    注意:新浪SAE选择python服务器之后,是免费的,但是python是2.7版本,因此python3的一些特性无法充分使用。

    三、部署:

    现在SAE上创建一个python应用,这个是最新版,我们选一下最简单配置(主要是不要钱哈哈哈哈),如果选独享环境的话,配置会好很多,而且可以使用python3以上的版本。

    然后填好二级域名和应用名称等,创建好应用之后,在代码管理中创建一个新的版本。而后我们可以选择编辑代码。能够实现在线编辑,根本用不着配置本地环境,SVN等等。当然像这种轻量级的应用在线编辑器就可以了,SVN的话还不如在线编辑好用。

    填好之后,会自动生成版本和url。

    四、微信平台配置url

    填入之前的url,后面加/weixin。后面在我们完成index.wsgi的时候可以进行验证。

    五、编写config.yaml

    这个文件在一开始有没有忘记了,如果没有的话,直接新建一个,这个文件是后台开发的配置文件,里面都是一些版本配置。

    name: liao
    version: 1
    
    libraries:
    - name: webpy 
      version: "0.36"
    
    - name: lxml
      version: "2.3.4"

    六、编写index.wsgi

    这个文件,其实就是相当于main.py,是从

    展开全文
  • java开发微信公众平台(一)-- 服务器配置 时间:2015-04-01 23:39:01 阅读:85 评论:0 收藏:0 [点我收藏+] 标签:  微信公众平台开发好像已经火了很长一段时间,我好像有点后知后觉。但只从了解它后便有点...

    java开发微信公众平台(一)-- 服务器配置

    时间:2015-04-01 23:39:01      阅读:85      评论:0      收藏:0      [点我收藏+]

    标签:

      微信公众平台开发好像已经火了很长一段时间,我好像有点后知后觉。但只从了解它后便有点不可收拾之势,脑袋里总想着开发一个自己的公众号,虽然不知道具体做什么。

      下面就说说自己这段时间对公众号的学习。

      欲善其事,必先利其器。在开发之前先要申请一个公众号,公众号有三种,个人比较容易申请的是订阅号,服务号还要审核,稍微麻烦一点,对于个人开发我建议申请服务号,

    因为后面会做自定义菜单的功能。再就是我们需要有一个公网的服务器,这个可以申请sina的sae和百度的bae,个人比较喜欢sina的一点,比较容易上手。这里不讲公众号的申请

    和sae服务器的申请和配置。

      再做完这两件事后我们就可以开始公众号的开发了。首先我们需要了解微信公众号的工作流程,对其有个整体的把握,要不今后就会换挺多简单错误。在启用开发者模式情况下

    (下面内容都是在此模式下)当用户通过微信客服端发送消息到微信服务后,微信服务器会将此消息转发给我们的公网服务器,如上面所说sae和bae(以下内容也均是在sae下完成)

    。具体的业务逻辑就在sae上完成,处理完后再将结果发回微信服务器,微信服务器再发给用户。

      申请到公众号后,登陆公众品台,可以看到微信已经帮我们准备好了许多功能,我们不需要编写任何代码就可以完成一个具有基本的公众号,但这不是本文的目的,我们是要

    用自己的代码实现一些功能,因此我们要进入开发者中心去配置服务器接口。

      下面就是本文核心内容:

      试想一下让两个完全不沾边的服务器(微信服务器和sae)对接的风险,因此必须有什么验证机制的存在。具体的验证过程是

    1、微信服务器会以get方式调用我们部署在sae服务器上的servlet,并传signature、timestamp、nonce、echostr四个参数。其中signature是微信加密签名;timestamp

      是时间戳,防止即使有别有用心之人获得另外的参数而因时间戳的不一致无法完成验证;nonce是随机数;echostr是随机字符串,用于返回给微信服务器作比较。

    2、servlet接收到以上数据后,会将token(在servlet中写好且要用公众平台上开发者中心的token相同)timestamp、nonce按字典方式排序,再拼接成字符串进行sha1加密

      将加密后的字符串与signature比较,如果相同就返回echostr。

    3、微信服务器接收到返回的echostr,与发过去的echostr相比较,如果相同,就接入成功,否则失败。

    技术分享
     1 /**
     2  * 核心请求处理类 
     3  * 
     4  */
     5 public class CrazyServlet extends HttpServlet {
     6 
     7     private static final long serialVersionUID = 5021188348833856475L;
     8     @Override
     9     protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
    10         // 微信加密签名  
    11         String signature = request.getParameter("signature");  
    12         // 时间戳  
    13         String timestamp = request.getParameter("timestamp");  
    14         // 随机数  
    15         String nonce = request.getParameter("nonce");  
    16         // 随机字符串  
    17         String echostr = request.getParameter("echostr");  
    18         PrintWriter out = response.getWriter();  
    19         // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败  
    20         if (SignUtil.checkSignature(signature, timestamp, nonce)) {  
    21                 out.print(echostr);  
    22         }  
    23         out.close();
    24         out = null;
    25     }
    servlet中的doGet()

     

    技术分享
     1 /**
     2  * 请求校验工具类
     3  */
     4 public class SignUtil {
     5     // 与接口配置信息中的Token要一致
     6     private static String token = "845C2550903CE6FA54CACDB82EAD4350";
     7 
     8     
     9     public static boolean checkSignature(String signature, String timestamp,
    10             String nonce) {
    11         //从请求中(也就是微信服务器传过来的)拿到的token, timestamp, nonce
    12         String[] arr = new String[] { token, timestamp, nonce };
    13         // 将token、timestamp、nonce三个参数进行字典序排序
    14         sort(arr);
    15         StringBuilder content = new StringBuilder();
    16         for (int i = 0; i < arr.length; i++) {
    17             content.append(arr[i]);
    18         }
    19         MessageDigest md = null;
    20         String tmpStr = null;
    21 
    22         try {
    23             md = MessageDigest.getInstance("SHA-1");
    24             // 将三个参数字符串拼接成一个字符串进行sha1加密
    25             byte[] digest = md.digest(content.toString().getBytes());
    26             //将字节数组转成字符串
    27             tmpStr = byteToStr(digest);
    28         } catch (NoSuchAlgorithmException e) {
    29             e.printStackTrace();
    30         }
    31 
    32         content = null;
    33         // 将sha1加密后的字符串可与signature对比,标识该请求来源于微信
    34         return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;
    35     }
    36 
    37   //将加密后的字节数组变成字符串
    38     private static String byteToStr(byte[] byteArray) {
    39         String strDigest = "";
    40         for (int i = 0; i < byteArray.length; i++) {
    41             strDigest += byteToHexStr(byteArray[i]);
    42         }
    43         return strDigest;
    44     }
    45 
    46     private static String byteToHexStr(byte mByte) {
    47         char[] Digit = { ‘0‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘9‘, ‘A‘,
    48                 ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘F‘ };
    49         char[] tempArr = new char[2];
    50         tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
    51         tempArr[1] = Digit[mByte & 0X0F];
    52 
    53         String s = new String(tempArr);
    54         return s;
    55     }
    56 //用于字典排序
    57     public static void sort(String a[]) {
    58         for (int i = 0; i < a.length - 1; i++) {
    59             for (int j = i + 1; j < a.length; j++) {
    60                 if (a[j].compareTo(a[i]) < 0) {
    61                     String temp = a[i];
    62                     a[i] = a[j];
    63                     a[j] = temp;
    64                 }
    65             }
    66         }
    67     }
    68 }
    验证核心代码

     

     

     

     再sae上配置好后,点击开发者中心,首先启用服务器配置。填写url和token(和java代码中的一样)、EncodingAESKey是随机生成,消息加解密方式选择明文模式。

    这里的url就是你在sae中创建应用的地址,我们已经将写好的java代码上传到这个地址。token是微信服务器和sae服务器进行对接验证是用到的(必须保持一致),消息

    加密暂时选择明文模式,如果选择加密模式需要编写加密代码,以后会再转到加密或兼容模式,这里先用明文模式。这样我们就完成了,点击提交(记得sae服务器要打开),

    如果现实成功就说明接入完成,我们可以接着做下面的工作了。

    java开发微信公众平台(一)-- 服务器配置

    标签:

    展开全文
  • 随着腾讯微信公众平台号的开放,围绕着微信的各种开发和营销如火如荼。很多商家也开始在微信上做文章,想充分利用微信平台4亿多的粉丝群体来进行各种营销和...作为本系列的第一篇,重点介绍微信平台和开发环境的搭建
  • 登录新浪sae平台,点击sae 点击创建新应用->继续创建 环境选择: ...申请微信测试号 扫码登录 下载在最下边 将wx_sample.php上传 填写如下信息即可 转载于:https...
  • 微信开发从入门到精通教程全 资料大全 java和php版本;教程文档、代码、视频 微信商城实例 包括微信公众号申请
  • java微信开发

    2019-07-25 16:16:43
    微信开发 崔用志-微信开发-java版本 ...微信开发准备(二)--springmvc+mybatis项目结构的搭建 微信开发准备(三)--框架以及工具的基本使用 微信开发准备(四)--nat123内网地址公网映射实现 Java微信...
  • 微信公众号的开发,这个博主写的很好,有需要的请参考:转载自:...所以下面给大家分享一下我的经验: 第一部分 介绍微信公众号的一些简单介绍以及微信扮演的一些角色,微信公众号的重...
  • 1:先到点击打开链接
  • 好久没进博客,最近应某人的要求,要每周写一篇博客,故此今天就把我这周刚学的微信...2.如何搭建微信开发平台 开发工具什么的就不说了,因为微信是要外网访问的,所有你必须有个网上的服务器资源,而且你必须申请
  • 一:微信公共号基础知识 简介 微信公众号是开发者或商家在微信公众平台上申请的应用账号,该帐号与QQ账号互通,通过公众号,商家可在微信平台上实现和特定群体的文字、图片、语音、视频的全方位沟通、互动 。...
  • 【网站开发】在新浪SAE搭建一个博客 概述  公司年会上同事开发了一个微信企业号,包含了投票,抽奖,祝福墙功能,还开了一个Session,跟我们讲了下公司的企业号开发过程和抽奖中奖率,觉得蛮有兴趣的,就...
  • 上篇文章主要介绍了URL、Token认证,以及使用免费的新浪SAE服务器搭建公众号的web应用。相信按照文章讲解,开发者们已经成功地完成了开发者公众号的配置。 上篇文章提到,URL还有一个作用:认证通过之后,URL就作为...
  • 推荐有关微信开发的十个开源项目时间:2015-04-29 20:34:07经常有做微信的朋友,问我能不能帮他实现公众号的这些功能啊、在微信方面能公开的我都免费共享给大家了,无论是微信网页方面的还是微信数据来源,我都在相关...
  • 因为要进行微信开发,就必须要成为微信开发者,要想成为微信开发者,就必须要有服务器响应微信的 Token 验证,如果没有公网服务器环境,可以去了解下BAE、SAE或阿里云,这里以 BAE 为例。 前提条件:  (1)...
  • 原文传送门... 版本说明:  V1:  ... 2014-2-13更新,红色字体代表最近一次更新的内容。... 2014-3-30 更新,上一版本有很多读者反应说最后还是无法通过微信 token 认证
  • 但是我任性地就想用更复杂的方法尝试一下,于是谷歌了一下,发现可以用flask框架+新浪SAE再配合图灵机器人api来搭建微信公众号的自动回复功能。本着人生就是来折腾的理念,废话少说,撸起袖子干! 具体步骤/思路如下...
  • 至于怎么用怎么具体实现,这是一个大话题,昨天有位朋友说他买了本微信开发方面的书,结果看了几天云里雾里一点都看不懂。严格来说微信开发并不是一门独立技术,学会编程后再看看微信官方接口文档自然就会了。因此,...
  • 新书《微信企业号开发揭秘》已出版,全书基于源码与API逐步讲解,采用WeChatEnterprise框架开发     纸质书购买地址: 天猫 京东 当当 亚马逊   WeChatEnterprise框架源码下载、克隆地址:...
1 2 3 4 5 ... 11
收藏数 220
精华内容 88
关键字:

sae搭建java微信开发