首页 / 技术 / 正文

微信公共平台开发学习笔记1-开启开发者模式

2014年05月25日 9 条评论 ... 技术

我向来是最不喜欢玩微信,但是最后还是稀里糊涂的开始着手做学校的官方微信了,由于人员的稀缺,技术部门目前为止只有我一个人,由于我对微信的 API 几乎是一窍不通,所以之前官方微信采取的就是依靠于手机版网页和简单粗暴的IP地址识别用户,由于对微信功能的需求日渐急迫,最后我只得硬着头皮开始学着做微信接口的开发,因此留下微信公共平台开发笔记作为记录。

微信公共平台的开发称之为微信 API 的开发,通过对微信接口的开发,可以实现微信数据与网站数据共享,推送信息等高级功能,对于校园微信来讲,微信接口可能起到作用的多半是对用户的识别,至于其他的,一般是不会用到的。好在,微信 API 可以通过各种开发语言实现,结合自己的实际情况(半吊子PHP技术流),最好选择PHP这个安全又高效的语言。

朕从宏观的层面观察了一下微信的 API 层次,基于URL的GET方式获取数据的方式比较多,顿时黑线,还真是高科技!

要进行微信的接口开发,前提工作就不多提了,微信公共平台账号和服务器,至于服务器如果没有资金支持的话,选择新浪SAE或者百度BAE都可以,我直接就用上了我现在用的这个网页服务器。

要通过微信的接口验证,就要通过编程语言实现微信验证要求:

只要四个数据:signature,timestamp,nonce,echostr。

signature:微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。

timestamp:时间戳

nonce:随机数

echostr:随机字符串

微信是这样要求的:将自行设置的token加上接收到的时间戳和随机数组合成为字典序列,然后经过sha1加密,与微信端发送的signature对比,如果相同即可通过验证。

官方提供的代码如下:

  1. private function checkSignature()
  2. {
  3.         $signature = $_GET["signature"];
  4.         $timestamp = $_GET["timestamp"];
  5.         $nonce = $_GET["nonce"];
  6.     $token = TOKEN;
  7.     $tmpArr = array($token$timestamp$nonce);
  8.     sort($tmpArr, SORT_STRING);
  9.     $tmpStr = implode( $tmpArr );
  10.     $tmpStr = sha1( $tmpStr );
  11.     if$tmpStr == $signature ){
  12.         return true;
  13.     }else{
  14.         return false;
  15.     }
  16. }

详细解读:

第一句:PHP定义 checkSignature() 功能

2-4句:通过 GET 方式从URL中获取 signature,timestamp,nonce,这三个数据。

第五句:$token = TOKEN;:定义$token 值要跟自己在平台验证时填写的token相同。

第六句:字典排列 $token, $timestamp, $nonce 三个变量。

第七句:sort() 函数按升序对给定数组的值排序

第八句:

implode() 函数把数组元素组合为一个字符串

语法:implode(separator,array)

separator    可选。规定数组元素之间放置的内容。默认是 ""(空字符串)。

array    必需。要结合为字符串的数组。

第九句:对变量进行sha1加密。

最后:如果与微信发送来的$signature 相同,则返回TRUE,否则返回FALSE。

 

将此代码放入服务器后,即可进行验证,完成服务器开发者模式的开启。

9 条评论

Loading...
  1. ysbinang

    我能说我们学校一个学长开发的遭到学校封杀了吗。。。(对了,你们学校其他人呢?大三的没有吗?)

    2014-05-25 [回复]
    • 有野出没

      如果另有企图的抢注学校的微信名称或者发布对学校不利的消息肯定要遭到封杀了,我们做的是学校官方的微信。现在微信小组纳新的人还没有招到技术很厉害的人啊。所以暂时这样了,不过现在大家都在努力学习呢。

      2014-05-27 [回复]
      • ysbinang

        我们的那个怎么说呢,具体学校没有透露,但既然能拿到教务处,餐厅,图书馆等的接口,还在学校的报纸上被美美的赞美了一下,我们的班主任就夸了好几下的话学校肯定之前同意了,记得当时太方便了,什么东西都知道,学分绩,一天饭卡的消费,图书馆的借书,课程表什么的。。后面教务处官网一个消息就封杀了,然后再没起身……还好,他大四直接工作了,现在好像拿到了阿里巴巴的office,据说面试的时候这个还占了很大的一部分,说起的时候面试官很感兴趣。。感觉好羡慕啊 关于教务处的请戳http://jwc.hit.edu.cn/news/Showgg.asp?id=3104

        2014-05-27 [回复]
        • 有野出没

          好牛啊,估计是跟超级课程表一样使用的是模拟登陆的方式获取的信息。

          2014-05-27 [回复]
          • ysbinang

            这个不清楚,反正学校就是作死,给力那么多的接口,关注量都是1万了。可惜……现在慢慢的回忆……

            2014-05-27 [回复]
  2. 漫道狂徒

    这个不错,可以学习一下的

    2014-05-28 [回复]
  3. Alick.Li

    不错哦~~

    2014-05-29 [回复]
  4. 互传站长网

    日暮东风怨啼鸟,落花犹似坠楼人

    2014-05-29 [回复]
  5. AdanWeidan

    最近是想做学校一个企业的公众号,但是苦于一点变成基础都没有

    2014-06-4 [回复]

发布评论