Django开发微信公众号(3) -- 通过微信公众号开发者认证

经过了前面所说的步骤, 我已经初步配置好了我的服务器环境, (先不用管数据库).

接下来, 我需要通过微信公众号的开发者认证


为什么我们需要弄认证呢?

首先, 如果按照一般的情况, 我们使用的是微信公众号的服务器提供的服务, 比如内置的自动回复, 或者自定义菜单, 图文消息等功能. 我们都是以"用户→公众号服务器"这样子的方式来运行. 未通过开发者认证的公众号用的就是这种通讯模式.

但是千千万万个公众号, 它们的需求不同, 光靠公众号的服务器提供的内置服务也不能满足这么多不同的需求啊, 于是, 公众号服务器通过开放各种接口, 把自己从一个服务器, 变成一个消息的中转站(用户→公众号服务器→我们的服务器). 用户发来的信息, 会先发到公众号服务器, 公众号服务器对这个消息包装一下(统一格式), 然后发向我们自己的服务器. 我们的服务器对消息进行拆包, 处理之后, 把结果再发回去, 通过公众号服务器, 然后展示给用户.

所以, 我们弄这个认证的目的就是告诉公众号服务器, 我有自己的服务器, 你收到消息之后尽管扔过来就行, 不用你处理了.


我们怎么弄这个认证?

首先, 我们新建一个应用, 就叫dict吧

python manage.py startapp dict

好, 现在, 我们的目录是这样子(跟前两个演示用的项目不同, 这次我创建了一个yuuuuchang的项目)


(emmm.我在dict放了点网页,所以在dict里的static和templates可以忽略)


然后, 我们在setting.py 里的 INSTALLED_APPS 注册 dict 这个应用



我们还要在setting.py最后面加一点东西


(

WECHAT_TOKEN 是一个token, 由你自己设定

WECHAT_APPID 是公众号的开发者ID,在公众号里获取

WECHAT_APPSECRET 是开发者密码, 也是在公众号里获取

)


那么, 这个APPID 和APPSECRET 怎么获得呢?

我们申请公众号之后, 在管理界面左边的菜单栏里, 找到 "开发" →"基本配置", 然后找到如图所示的地方


(开发者密码是需要你点重置之后获取的, 只能看到一次, 记得保存, 如果以后忘了, 重新重置即可)


接着, 我们修改urls.py, 设定一个url, 以后公众号服务器收到的信息都发到这个url上去.



然后我们打开dict的views.py,写一些东西

# -*- coding: utf-8 -*-
import os
import sys
root = os.path.dirname(__file__)
sys.path.insert(0, os.path.join(root, '../site-packages/Django-1.9.7-py2.7.egg'))

from django.shortcuts import render
from django.http.response import HttpResponse, HttpResponseBadRequest
from django.views.decorators.csrf import csrf_exempt

from wechat_sdk import WechatBasic
from wechat_sdk.exceptions import ParseError
from wechat_sdk.messages import TextMessage, VoiceMessage, ImageMessage, VideoMessage, LinkMessage,
	LocationMessage,EventMessage
from yuuuuchang.settings import WECHAT_TOKEN, WEIXIN_APPID, WEIXIN_APPSECRET

wechat = WechatBasic(
	token=WECHAT_TOKEN,
	appid=WEIXIN_APPID,
	appsecret=WEIXIN_APPSECRET
)


@csrf_exempt
def auto_response(request):

	# 微信认证
	if request.method == 'GET':
		signature = request.GET.get('signature')
		timestamp = request.GET.get('timestamp')
		nonce = request.GET.get('nonce')

		if not wechat.check_signature(signature=signature, timestamp=timestamp, nonce=nonce):
			return HttpResponseBadRequest('Verify Failed')
		else:
			return HttpResponse(request.GET.get('echostr', ''), content_type='text/plain')

(这里的代码参考了马志峰的《边做边学,Python&Django实战教程-11-Django微信公众号开发》)


写到这里,就可以把代码提交上去了.然后我们进入公众号的"开发"→"基本配置"界面

我们找到"服务器配置", 然后点击修改配置



写完之后点提交, 然后公众号服务器会发出一个包, 里面包含以下这些东西



我们刚才在views.py写的代码的意思就是接收这个包, 然后,时间戳, 随机数, 然后加上token, 最后进行sha1加密, 结果等于signature的话就返回echostr内容, 公众号服务器接收到这个内容之后就提示接入成功 

运算代码是这样(感兴趣可以看看)


(意思就是把token,时间,和随机数进行sha1加密, 加密的结果等于signature的话就返回true 否则返回false)


提示接入成功之后, 就点击刚才修改配置旁边的"启用"就可以了,点击之后就变成停用.向下面一样



到这里就接入完成了, 祝你玩得愉快~

以上!

发布了18 篇原创文章 · 获赞 16 · 访问量 6万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 精致技术 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览