百度云和微信账号接入

利用百度云平台运行我们自己的服务端项目,在平台上线运行。利用这个项目对应的域名将其配置到微信公众平台,并填写token值。(这里的token值是我们自定义的一个字符串,它配置在服务端项目)在手机微信客户端搜索你的微信公众平台公众号(订阅号),当然通过二维码会更快速准确,呵呵。

下面我们先重服务器端开始。

进入百度云平台的管理控制台(请大家进入旧版--右上角):http://developer.baidu.com/dev点击创建应用,并创建一个手机web应用。

出现以下页面后,点击云环境:

创建域名,选择开发语言(我用的是Java),选着版本管理器(我用的是svn),点击确定:

等待后弹出提示创建成功后,点击确定,跳转到如下页面---------创建版本:

点击创建版本后,会出现两种选择,一种是在线创建项目,然后在线编辑发布,本人还是觉得第二种顺手,上传war包,即将本地建好的web项目发布为war包,然后上传,在上线,我们就以上传war包方式为例:这里我们就暂且停下:开始来编辑我们需要的web项目。

在eclipse中心建一个web项目(tomcat服务器)新建MainServer.java

需要导入的jar包:大家没有的可以到我的云盘去下载:点击打开链接

[java] view plaincopyprint?

  1. <span style="font-family:SimHei;font-size:12px;">package com.weixin.zfeng.server;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.IOException;  
  5. import java.io.InputStreamReader;  
  6. import java.security.MessageDigest;  
  7. import java.util.Arrays;  
  8. import java.util.Date;  
  9.   
  10. import javax.servlet.ServletException;  
  11. import javax.servlet.ServletInputStream;  
  12. import javax.servlet.http.HttpServlet;  
  13. import javax.servlet.http.HttpServletRequest;  
  14. import javax.servlet.http.HttpServletResponse;  
  15. import org.dom4j.Document;  
  16. import org.dom4j.DocumentHelper;  
  17. import org.dom4j.Element;  
  18.   
  19. import com.weixin.zfeng.utils.Weather;  
  20.   
  21.   
  22. public class MainServer extends HttpServlet{  
  23.     //这里是你定义的token值  
  24.     private final String TOKEN = "haha";  
  25.     @Override  
  26.     protected void doPost(HttpServletRequest req, HttpServletResponse resp)  
  27.             throws ServletException, IOException {  
  28.         //取出随机字符串  
  29.         String echostr=req.getParameter("echostr");    
  30.         if(null==echostr||echostr.isEmpty()){    
  31.             responseMsg(req,resp);    
  32.         }else{    
  33.             if(this.checkSignature(req)){    
  34.                 resp.getWriter().print(echostr);   
  35.             }else{    
  36.                 resp.getWriter().print("");                                                                                                                                                                                                                                                                                                                                             
  37.             }    
  38.         }    
  39.           
  40.     }  
  41.       
  42.     @Override  
  43.     protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
  44.             throws ServletException, IOException {  
  45.         doPost(req, resp);  
  46.     }  
  47.       
  48.     //回复  
  49.     public void responseMsg(HttpServletRequest req,HttpServletResponse resp) throws IOException{    
  50.         String postStr=null;    
  51.         try{    
  52.             postStr=this.readStreamParameter(req.getInputStream());    
  53.         }catch(Exception e){    
  54.             e.printStackTrace();    
  55.         }    
  56.         //System.out.println(postStr);    
  57.         if (null!=postStr&&!postStr.isEmpty()){    
  58.             Document document=null;    
  59.             try{    
  60.                 document = DocumentHelper.parseText(postStr);   
  61.                 if(null==document){    
  62.                     resp.getWriter().print("");  
  63.                     return;    
  64.                 }    
  65.             }catch(Exception e){    
  66.                 e.printStackTrace();    
  67.             }    
  68.               
  69.             Element root=document.getRootElement();    
  70.             String fromUsername = root.elementText("FromUserName");    
  71.             String toUsername = root.elementText("ToUserName");    
  72.             String keyword = root.elementTextTrim("Content");    
  73.             String time = new Date().getTime()+"";    
  74.             String textTpl = "<xml>"+    
  75.                         "<ToUserName><![CDATA[%1$s]]></ToUserName>"+    
  76.                         "<FromUserName><![CDATA[%2$s]]></FromUserName>"+    
  77.                         "<CreateTime>%3$s</CreateTime>"+    
  78.                         "<MsgType><![CDATA[%4$s]]></MsgType>"+    
  79.                         "<Content><![CDATA[%5$s]]></Content>"+    
  80.                         "<FuncFlag>0</FuncFlag>"+    
  81.                         "</xml>";                 
  82.               
  83.               
  84.             //发送消息类型  
  85.             String msgType = "text";    
  86.             String contentStr = "";  
  87.             String resultStr="";//返回消息  
  88.               
  89.             //关注订阅号后,返回的提示  
  90.             if(null==keyword||keyword.equals("")){    
  91.                 contentStr = "hi,how are you! I'm server and with baiduyun";  
  92.             }  
  93.           //微信客户端发送time,服务器解析到后返回当前时间  
  94.             else if(keyword.equals("time")){  
  95.                 contentStr = new Date().toString();  
  96.             }  
  97.             resultStr = String.format(textTpl, fromUsername, toUsername, time, msgType, contentStr+"---zhaofeng");    
  98.             resp.getWriter().print(resultStr);  
  99.     
  100.         }else {    
  101.             resp.getWriter().print("");    
  102.         }    
  103.         resp.getWriter().flush();  
  104.         resp.getWriter().close();  
  105.     }    
  106.     //检查请求  
  107.     public boolean checkSignature(HttpServletRequest request){    
  108.         //这里是微信进行安全验证的四个值,由于token为明文,所以前用前三个值进行加密计算后的值与token对比(不具体描述)  
  109.         String signature = request.getParameter("signature");    
  110.         String timestamp = request.getParameter("timestamp");    
  111.         String nonce = request.getParameter("nonce");    
  112.         String token=TOKEN;    
  113.           
  114.         String[] tmpArr={token,timestamp,nonce};    
  115.         Arrays.sort(tmpArr);    
  116.         String tmpStr=this.ArrayToString(tmpArr);    
  117.         tmpStr=this.SHA1Encode(tmpStr);    
  118.         if(tmpStr.equalsIgnoreCase(signature)){    
  119.             return true;    
  120.         }else{    
  121.             return false;    
  122.         }    
  123.     }    
  124.       
  125.     public String SHA1Encode(String sourceString) {    
  126.         String resultString = null;    
  127.         try {    
  128.            resultString = new String(sourceString);    
  129.            MessageDigest md = MessageDigest.getInstance("SHA-1");    
  130.            resultString = byte2hexString(md.digest(resultString.getBytes()));    
  131.         } catch (Exception ex) {    
  132.         }    
  133.         return resultString;    
  134.     }   
  135.       
  136.       
  137.     private String byte2hexString(byte[] bytes) {  
  138.         StringBuffer buf = new StringBuffer(bytes.length * 2);    
  139.         for (int i = 0; i < bytes.length; i++) {    
  140.             if (((int) bytes[i] & 0xff) < 0x10) {    
  141.                 buf.append("0");    
  142.             }    
  143.             buf.append(Long.toString((int) bytes[i] & 0xff, 16));    
  144.         }    
  145.         return buf.toString().toUpperCase();    
  146.     }  
  147.   
  148.     //  
  149.     public String ArrayToString(String [] arr){    
  150.         StringBuffer bf = new StringBuffer();    
  151.         for(int i = 0; i < arr.length; i++){    
  152.          bf.append(arr[i]);    
  153.         }    
  154.         return bf.toString();    
  155.     }    
  156.     
  157.     //流中读取数据  
  158.     public String readStreamParameter(ServletInputStream in){    
  159.         StringBuilder buffer = new StringBuilder();    
  160.         BufferedReader reader=null;    
  161.         try{    
  162.             reader = new BufferedReader(new InputStreamReader(in));    
  163.             String line=null;    
  164.             while((line = reader.readLine())!=null){    
  165.                 buffer.append(line);    
  166.             }    
  167.         }catch(Exception e){    
  168.             e.printStackTrace();    
  169.         }finally{    
  170.             if(null!=reader){    
  171.                 try {    
  172.                     reader.close();    
  173.                 } catch (IOException e) {    
  174.                     e.printStackTrace();    
  175.                 }    
  176.             }    
  177.         }    
  178.         return buffer.toString();    
  179.     }    
  180. }  
  181. </span>  

这里是一个最基本的骨架代码,大家可以在上面进行跟多丰富的扩展。接着我们将项目导出为war包。接着就是刚刚说到的上传war包了,这里就不再讲了。上传成功后点击上线(哦这里有个下提示,当然这里不存在,免费用户每次只能上传50M以内哦),等待提示“代码已生效”后,出现:

接着我们就应该配置微信公众平台了:(申请注册微信公众平台要求比较严格,需要审核几天到N天不等)。https://mp.weixin.qq.com/

前不久我是借用别个的账号进行测试的,我的公众号都几天了还没有通过,哎~所以这里没法给大家截图。其实微信里边配置很简单,就是一个访问项目的域名,和一个token值,填正确这两个后就可以确定了,然后就是关注账号进行测试了。我的上一个测试用的是return这个号,大家关注后发送time试下效果(相同代码)

这里的域名就是你创建web项目时写的mytestserverforweixin.duapp.com注意这里并不是完全正确的域名,还需要在前面加上你的版本号:1.mytestserverforweixin.duapp.com。希望过几天我的公众号能够通过,

到时候给大家截两张图更好。

时间: 2024-09-17 04:04:12

百度云和微信账号接入的相关文章

自媒体时代 今日头条能超越百度与微信吗

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断淘宝客 站长团购 云主机 技术大厅 文/王超 因为微信开通公众账号,导致自媒体概念火爆,2013年也被称为自媒体年.自媒体的流行,造成了大批的内容制作者或者记者从机构离职,经营自己的公众账号或者自媒体. 在订阅号的影响力方面,个人账号已经跟机构账号平分秋色.根据徐达内的排名,比起人民日报.央视新闻等老牌机构,很多个人账号在订阅和阅读量上还有优势;抛开时政,在财经.时尚.

php微信开发接入_php技巧

微信,想必大家都不陌生,像支付宝一样在悄悄的改变大家的生活方式.伴随着这种新的生活方式,越来越多的微服务也开始进入我们的生活,我们可以使用微信查询信用卡帐单.还款.支付,在最近的一次微信合作伙伴大会上,腾讯向公众服务号开放支付功能与九大高级接口,透过这些接口,开发者可以实现使用利用微信摇控电视.冰箱.洗衣机甚至电饭煲,使用微信的微支付功能,还能方便地在线购买电影票.手机充值.收看互联网电视付费节目等. 下面,就我个人的了解,简单讲述一下微信开发的第一步,如何与微信服务器对接. 想要涉足微信开发,

启用微信账号保护功能时将微信与手机号进行绑定的过程

微信官方宣布推出两个安全措施:账号保护和账号紧急冻结通道.账号保护功能是将微信与手机号进行绑定,此举似乎针对的是通过QQ号注册微信的用户.该绑定过程需要四步: 1.在"我"的栏目里进入"个人信息",点击"我的帐号": 2.在"手机号"一栏输入手机号码: 3.系统自动发送六位验证码到手机,成功输入六位验证码后即可完成绑定: 4.让"帐号保护"一栏显示"已启用",即表示微信已启动了全新的帐号

百度云和百度网盘一样吗?

我们知道百度网盘可以上传很多我们手机电脑本地存不下的东西,那么百度云是什么呢?百度云和百度网盘一样吗?接下来小编就为大家介绍一下百度云百度网盘的区别. 百度云和百度网盘一样吗 百度云百度网盘的区别 什么是百度云 百度云是百度公司推出的一款云服务产品.通过百度云,您可以将照片.文档.音乐.通讯录数据在各类设备中使用,在众多朋友圈里分享与交流. 什么是百度云盘 百度云网盘为您提供文件的网络备份.同步和分享服务.空间大.速度快.安全稳固,支持教育网加速,支持手机端. 两者区别 百度云包含百度网盘.相册

百度站长平台与百度统计实现账号互通

中介交易 SEO诊断淘宝客 站长团购 云主机 技术大厅 各位网站管理员, 很高兴的通知大家,百度站长平台与百度统计在今日实现账号互通,只要拥有任意一个平台的账号,就可以同时使用这两个平台,并可便捷的将统计账号下的站点同步至站长平台,减少重复注册及验证网站带来的烦恼. 账号互通效果展示: 1.百度统计用户登录百度站长平台 第一步:在百度站长平台(http://zhanzhang.baidu.com/)登录页面选择使用"联盟账号"进行登录: 第二步:同步站点 首次登录后,会有页面提示是否同

免费爱奇艺/百度云VIP账号9月13日分享

百度云VIP账号免费的9月12日分享 账号:1482659906密码:111qqq. 账号:3457775763密码:444zzz 账号:1378587517密码:p88398 账号:3527661577 密码:vipbaiduyun.com 9月12日爱奇艺第二批vip账号18:50分更新 账号:18558939391密码:ss911209 账号:13871497683密码:lsy060233 账号:15983817531密码:xts960216 账号:18068755377密码:QQ1234

网店店主如何增加微信账号的订阅

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 上一篇微信系列二写了用微信公众平台账号维护老顾客的方法,今天和大家详细讲下在让一次购买过的顾客添加你的微信公众账号的小技巧.你是一个网店店主,淘宝把一个庞大的鱼塘放在你面前,不仅是你看到,做网店的都看到了,但这个鱼塘并不属于你的,谁把鱼塘里的鱼抓的多,谁就更有优势. 网店顾客80%都是一次购买用户,微信使用者都是用手机登陆,而且能登陆看微信的

百度糯米原账号被盗 核实后将全额赔付损失

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 新浪科技讯 4月29日晚间消息,近日有用户向新浪科技反映,其百度糯米原账号信息被删除,绑定手机号码被修改,账户余额被转走,而其本身却未进行过任何操作.对此,百度糯米回应称,核实情况后将全额赔付用户因盗号带来的损失,并表示已对账号进行了安全升级,从而保障用户安全. 根据用户反应,近日他们均收到一条来自百度糯米的短信提醒:"您正在修改在

媒体微信账号如何做到20万订阅用户

中介交易 SEO诊断 淘宝客 云主机 技术大厅 文/管鹏(搜狐IT特约作者) 以下内容,是笔者和国内某中央媒体微信运营交流ppt而整理出来的文字稿,在此抛砖引玉,和众多微信运营着和爱好者一起交流学习. 微信对推送这一媒体属性会管控更严 前段时间某IT公司一大佬爆料称"微信公众帐号将取消推送功能",谣言没活几天,就被微信团队给毙了.众所周知,主动推送功能是移动互联网APP活跃度运营的重要砝码,把它去了,微信活跃度要下降一大半.再说了,大家都说微信不会走媒体这条路,但是你说商家难道不是一个