豆瓣搜索—微信公共平台接入

本篇主要介绍如何把自己的服务器接入到微信公共平台,服务器端使用python+flask开发,并部署到sinaapp服务器上。

上篇中提到过在接入配置中主要有三个内容需要填写,URL/Token/域名。URL就是要接入的服务器微信消息处理地址,Token可以是自己定义的一个字符串,用于校验。接下来我们主要实现用于接入校验用的接口。

首先需要实现flask app

from flask import Flask, request, render_template

app = Flask(__name__)
app.debug = True
app.secret_key = APP_SECRET_KEY

#公众号消息服务器网址接入验证
#需要在公众帐号管理台手动提交, 验证后方可接收微信服务器的消息推送
@app.route('/weixin', methods=['GET'])
def weixin_access_verify():
    pass

在微信测试帐号的配置页面中,当我们填写URL时,微信服务器会通过GET方式发起一次校验请求,我们就在weixin_access_verify函数中处理微信的校验请求,并返回请求中的echostr,如果微信服务器能正确的收到echostr为内容的响应,则认为该配置成功。

接下来我们实现请求校验函数

TOKEN = 'douban_book'	#注意要与微信公众帐号平台上填写一致

#接入和消息推送都需要做校验
def verification(request):
    signature = request.args.get('signature')
    timestamp = request.args.get('timestamp')
    nonce = request.args.get('nonce')

    tmplist = [TOKEN, timestamp, nonce]
    tmplist.sort()
    tmpstr = ''.join(tmplist)
    hashstr = hashlib.sha1(tmpstr).hexdigest()

    if hashstr == signature:
        return True
    return False
上面代码中的TOKEN一定要和微信测试帐号配置页面中的Token字段一致,否则会提示配置失败。该函数主要就是针对请求中的timestamp/nonce和TOKEN字段进行特定算法的计算,然后和请求中的signature字段进行校验,只有两者一致才说明校验成功。具体算法可以查看http://mp.weixin.qq.com/wiki/0/61c3a8b9d50ac74f18bdf2e54ddfc4e0.html#.E4.BD.BF.E7.94.A8.E6.96.B9.E6.B3.95

接下来我们可以实现weixin_access_verify函数,该函数首先对请求进行校验,如果校验成功则把echostr返回,否则返回“access verification fail“

#公众号消息服务器网址接入验证
#需要在公众帐号管理台手动提交, 验证后方可接收微信服务器的消息推送
@app.route('/weixin', methods=['GET'])
def weixin_access_verify():
    echostr = request.args.get('echostr')
    if verification(request) and echostr is not None:
        return echostr
    return 'access verification fail'
至此,服务端相关的代码已经完成,接下来就到测试帐号的配置页面进行配置,最终配置如下图所示



至此,配置工作已经完成,下篇我们就要完成书籍信息查询功能。

posted @ 2015-05-05 15:56  菩提本无树  阅读(276)  评论(0编辑  收藏  举报