找回密码
 立即注册

QQ登录

只需一步,快速开始

微信公众号开发资源

关注:780

所属分类: 微信开发 微信公众号开发资源

本版块为微信公众号开发教程与公众号开发相关技术分享板块,技术提问请到其他对应的问答板块发帖:)

[公众号开发博客] 微信开发者中心配置 - 傻瓜式微信开发教程3 - 耗子原创

[复制链接]
查看: 17031|回复: 30
最佳答案
91 

57

主题

231

帖子

2112

积分

超级版主

Rank: 8Rank: 8

积分
2112
QQ
 楼主| 发表于 2015-8-17 14:12:51 | 显示全部楼层 |阅读模式
本帖最后由 moremorefun 于 2015-8-24 09:30 编辑

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

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

1-微信公众平台-成为开发者

1-微信公众平台-成为开发者


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

2-微信公众平台-配置项

2-微信公众平台-配置项

3-微信公众平台-配置说明

3-微信公众平台-配置说明


3.token验证失败的原因是,我们在SAE上还未对token进行验证.
我们在`微信公众号`的接入指南http://mp.weixin.qq.com/wiki/17/ ... 70a95559800f2d.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以便在页面中输出我们需要的调试数据.

4-微信公众平台-调试数据

4-微信公众平台-调试数据



回复

使用道具 举报

最佳答案
12 

40

主题

650

帖子

7103

积分

S2

积分
7103

积极分子

QQ
发表于 2015-8-17 14:55:40 | 显示全部楼层
谢谢分享
回复

使用道具 举报

最佳答案
1 

1

主题

200

帖子

648

积分

专家路上

CEO

积分
648
发表于 2015-8-17 17:51:14 | 显示全部楼层
太专业了  不懂

点评

什么地方没看明白,我以后写详细点  详情 回复 发表于 2015-8-17 17:55
前路 钱路 有钱才有路——qian.lu
回复 支持 反对

使用道具 举报

最佳答案
91 

57

主题

231

帖子

2112

积分

超级版主

Rank: 8Rank: 8

积分
2112
QQ
 楼主| 发表于 2015-8-17 17:55:06 | 显示全部楼层
one 发表于 2015-8-17 17:51
太专业了  不懂

什么地方没看明白,我以后写详细点

点评

one
不是你写的不详细 是我基础差  详情 回复 发表于 2015-8-17 18:35
回复 支持 反对

使用道具 举报

最佳答案
1 

1

主题

200

帖子

648

积分

专家路上

CEO

积分
648
发表于 2015-8-17 18:35:02 | 显示全部楼层
moremorefun 发表于 2015-8-17 17:55
什么地方没看明白,我以后写详细点

不是你写的不详细  是我基础差
前路 钱路 有钱才有路——qian.lu
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

5

帖子

12

积分

新人求带

积分
12
发表于 2015-10-4 17:54:47 | 显示全部楼层
兄弟。能做视频教程么。
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

4

帖子

13

积分

新人求带

积分
13
发表于 2015-10-8 10:00:57 | 显示全部楼层
从第三步就做不下去了啊,怎么办?求楼主帮助
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

7

帖子

36

积分

新人求带

积分
36
发表于 2015-10-24 14:20:02 | 显示全部楼层
写得很好,这么token还是要写复杂些,万一被人猜到了呢?
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

7

帖子

36

积分

新人求带

积分
36
发表于 2015-10-24 14:20:47 | 显示全部楼层
这个系列贴太给力了!
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

15

帖子

22

积分

新人求带

积分
22
发表于 2015-10-30 18:32:37 | 显示全部楼层
回复只为收藏
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


易域网-您身边的域名管家

henkuai.com是专业的第三方微信开发者平台,为生态而生。


本站为第三方微信开发者平台,非腾讯官方网站。

天津市滨海新区
中新生态城中成大道生态建设公寓9号楼3层301

欢迎来这里一起喝喝茶,
聊聊你的产品。

微信公众号gongzhongkaifa

工作日12小时内回复。

网站业务
zhongcong@henkuai.com

工作日12小时内回复。

市场合作
songchang@henkuai.com