php专区

 首页 > php专区 > PHP应用 > 开放平台 > 大齐玩转微信公众账号系列(五):微信公众账

大齐玩转微信公众账号系列(五):微信公众账

分享到:
【字体:
导读:
          此系列博文目录:如何申请微信公众帐号微信公众账号消息那些事儿服务号实现自定义菜单微信公众账号开发入门(原理)微信公众账号开发:URL 和 Tocken微信公众账号开发:消息原理微信...

 此系列博文目录:

 

如何申请微信公众帐号

微信公众账号消息那些事儿

服务号实现自定义菜单

微信公众账号开发入门(原理)

微信公众账号开发:URL 和 Tocken

微信公众账号开发:消息原理

微信公众账号开发:消息设计、源码

微信公众账号开发:菜单原理、设计、源码

微信公众账号开发:JS接口

微信公众账号开发:Auth2.0认证原理、设计、源码

 

 

 

接口说明文档 http://mp.weixin.qq.com/wiki/index.php?title=%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97

从这篇博客开始,我们就开始真正进入微信公众账号开发阶段。

这篇博客主要介绍成为微信公众账号开发者的第一步:URL 和 Tocken认证 (包括:逻辑结构、源码),只有为微信公众平台提供了URL 和 Tocken,并且通过了认证,才能进行面向公众账号其他各个接口进行开发。

 

一、URL 和 Tocken 简介

1、想成为开发者必须要有一个公网的网络地址(URL),这个网络地址要求微信公众平台可以访问到,网络地址的获取有多种方式:可以借助其他平台,也可以自己租借服务器(建议自己租一个服务器,因为我们需要部署应用);总之,你要提供出一个公网上的URL;

2、Tocken(标记):Tocken可以随便填写一个字符串,在认证的时候使用;

3、认证过程:需要开发者进行编程,所以要在开发者服务器上部署一个应用(提供URL);当公网上的URL被微信访问时,微信会发送过来一些数据,你的应用要把微信发送过来的数据进行加密,然后用密文和signature比较,如果相同,返回echostr给微信公众平台,微信公众平台进行校验,如果正确,那么恭喜你,你的公众账号成为成为开发者账号;

 

二、验证流程图

您已经向微信公众平台提供了 URL(开发者服务器网址址) 和 Tocken,下图是微信公众平台认证流程;

 

从上图可以看出,主要验证功能是在开发者服务器这端,其中在开发者服务器这端进行tocken,timestamp,nonce加密认证(sha1加密)的时候,tocken是开发者提供给微信公众平台的;如果加密的结果和 微信公众平台提供的signature一样,那么我们就返回echostr给微信公众平台;微信公众平台进行echostr认证,如果通过,公众账号就成为了开发者

 

三、代码说明

本人开发用的是python语言,如果你使用的是其他语言,逻辑结构类似,只是实现不同;

 

@csrf_exempt
def wx_valid(request):#提供给微信公众平台的url,微信公众平台请求url时,会执行此方法

    '''微信开发者验证,是GET请求;GET 和 POST 区分是认证还是发送消息(发送消息的时候是POST)'''
    if(request.method == 'GET'):
        tocken='zainanjing6tocken'#提供给微信公众平台的tocken,可以保持在数据库、文件或者直接硬编码到代码中;
        if tocken:
            timestamp = request.GET['timestamp']
            nonce = request.GET['nonce']
            signature = request.GET['signature']
            echostr = request.GET['echostr']
           
            arr = [tocken,timestamp,nonce]
            arr.sort()
            data = ''
            for s in arr :
                data += s
            sha1 = hashlib.sha1() #或hashlib.md5()  
            sha1.update(data)
            _signature = sha1.hexdigest() #生成40位(sha1)或32位(md5)的十六进制字符串  
            if _signature == signature :
                return HttpResponse(echostr)#返回 echostr
    return HttpResponse('error')#返回 error
 


 

以上就是开发者验证URL和Tocken逻辑流程和源码了,下面我们就说一下整体的操作流程;

四、操作过程

1、首先在开发者服务器上部署应用,提供出URL 和 Tocken,(此URL要求微信公众平台能够访问到)

2、把URL 和 Tocken 添加到微信公众平台开发者模式中后,微信公众平台就会自动请求URL,开发者服务器进行数据验证(signature验证),如果验证通过,返回echostr给微信公众平台

3、如果成功成为了开发者账号,并且公众账号的模式调整为 开发者模式 ,那么用户给公众账号发送的消息,就不是由微信公众平台进行回复了,微信公众平台会将消息转发给开发者服务器,开发者服务器进行消息回复(请看上一篇开发者原理)

至此,URL 和 Tocken的认证就算结束了,如果认证通过了,那么恭喜,你的账号已经是开发者账号,下一步必须要做的是开发回复用户消息的功能,不然用户接收不到任何消息;

下一篇我们将详细介绍回复用户消息功能的设计、开发; 

分享到:
柳峰微信公众帐号开发教程第11篇-符号表...
题外话(可以略过) 相信这篇文章已经让大家等的太久了,不是我故弄玄虚、吊大家胃口,而是写一篇文章真的需要花太多的时间。也许一篇文章,你们花3-5分钟就看完了、就学会掌握了,而我却要花2-3个小时的时间来完成,也许只有用心写过文章的人才能体会,希望大家能够相互体谅!   也曾经有人对我说,我写的东西太初级,...
大齐玩转微信公众账号系列(四):微信公...
 此系列博文目录: 如何申请微信公众帐号 微信公众账号消息那些事儿 服务号实现自定义菜单 微信公众账号开发入门(原理)微信公众账号开发:URL 和 Tocken 微信公众账号开发:消息原理 微信公众账号开发:消息设计、源码 微信公众账号开发:菜单原理、设计、源码 微信公众账号开发:JS接口微信公众账号开发:Auth2.0...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……