分享

微信开发者中心配置 - 傻瓜式微信开发教程3 - 耗子原创

 取经悟能 2015-10-10
本帖最后由 moremorefun 于 2015-8-24 09:30 编辑

前两节我们已经完成了 微信公众号的申请 和 SAE服务器的申请.
现在我们对微信公众号的`开发者中心`进行相关的配置,
完成腾讯对我们的公众号服务器的验证.

1.从微信公众平台打开`开发者服务中心`连接,
https://mp.weixin.qq.com
第一次打开时会提示用户注册成为开发者,
接受协议,成为开发者.


2.接受协议以后会出现配置选项.
平台为我们生成了`AppID`,`AppSecret`这些字段.
我们需要点击`修改配置`对`服务器配置`区块进行配置.
在此期间,可能会出现信息不全,需要补齐信息的提示,
这时候去上传一个公众号的头像就OK了.
`URL(服务器地址)`指的是我们公众号的服务的地址,也就是我们之前申请好的SAE的服务域名,
如果忘记可以去sAE控台查看,我这里的是 http://weixinshow001.sinaapp.com
`Token(令牌)`相当于微信服务器和我们自己的服务器之间交流的一个约定,
用于确定我们的服务器接收到的消息确实是微信的服务器发出的.
我这里填写为weixin.
`EncodingAESKey(消息加解密密钥)`信息加密密钥.
随机生成就可以了.
填写完成后点击提交.
这时候会提示`token`验证失败.



3.token验证失败的原因是,我们在SAE上还未对token进行验证.
我们在`微信公众号`的接入指南http://mp.weixin.qq.com/wiki/17/2d4265491f12608cd170a95559800f2d.html中可以看到token的验证方式,
并且提供了验证的示例代码.
开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带四个参数:

参数  描述
signature   微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp   时间戳
nonce   随机数
echostr 随机字符串
开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。

加密/校验流程如下:
1. 将token、timestamp、nonce三个参数进行字典序排序
2. 将三个参数字符串拼接成一个字符串进行sha1加密
3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

4.现在我们需要编写SAE主页的代码,实现token的验证功能.
打开利用SVN抓取到本地的代码,找到`index.php`文件,并使用文本编辑器打开,在文本编辑器中输入如下代码:
  1. <?php
  2. define("TOKEN","weixin");

  3. function checkSignature()
  4. {
  5.     //从GET参数中读取三个字段的值
  6.     $signature = $_GET["signature"];
  7.     $timestamp = $_GET["timestamp"];
  8.     $nonce = $_GET["nonce"];

  9.     //读取预定义的TOKEN
  10.     $token = TOKEN;
  11.     //对数组进行排序
  12.     $tmpArr = array($token, $timestamp, $nonce);
  13.     sort($tmpArr, SORT_STRING);
  14.     //对三个字段进行sha1运算
  15.     $tmpStr = implode( $tmpArr );
  16.     $tmpStr = sha1( $tmpStr );

  17.     //判断我方计算的结果是否和微信端计算的结果相符
  18.     //这样利用只有微信端和我方了解的token作对比,验证访问是否来自微信官方.
  19.     if( $tmpStr == $signature ){
  20.         return true;
  21.     }else{
  22.         return false;
  23.     }
  24. }

  25. if(checkSignature()){
  26.     echo $_GET["echostr"];
  27. }
  28. else{
  29.     echo 'error';
  30. }
复制代码

要注意,保存后只是储存在本地了,并没有在SAE的服务器上起作用,我们需要
用svn提交代码到svn仓库,相应的更改才能生效!
用svn提交代码到svn仓库,相应的更改才能生效!
用svn提交代码到svn仓库,相应的更改才能生效!
(重要的事情说三遍).
最近有朋友指出,这个验证不通过.
可能是由于用户没有通过SAE的实名认证,
当用户没有通过实名认证时,SAE会在返回的消息里加上一些小尾巴,
这样导致了返回给微信服务器的字符串不能匹配,
出现了验证不通过的问题.

5.重新提交微信配置信息,这时候我们的提交会显示成功.
然后点击`启用`按钮,微信公众号的处理将全部转由我们的SAE服务器处理.

ps:
a. SAE可以看到访问日志,在`应用控台`的`日志中心`标签下,
我们能看到每次访问的数据,这对于我们调试配置不通过出现的错误有一定的用处.
b. 在日志中心我们可以看到微信服务器访问的url参数,我们可以直接使用浏览器来直接GET这个url以便在页面中输出我们需要的调试数据.
 


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多