微信公众号第三方平台开发PYTHON教程 PART 5
来源:互联网 发布:java实现md5解密算法 编辑:程序博客网 时间:2024/05/29 13:21
github地址:cppfun@wechat-open-third-party-dev
在开始本节之前,你需要先阅读前四节的内容:
微信公众号第三方平台开发python教程 Part 1
微信公众号第三方平台开发python教程 Part 2
微信公众号第三方平台开发python教程 Part 3
微信公众号第三方平台开发python教程 Part 4
本节第五讲,我们讲讲如何刷新token(刷新授权公众号的接口调用令牌)。
这个其实就更简单了,代码如下:
def get_refresh_authorizer_access_token(self, authorizer_appid, authorizer_refresh_token):
url = 'https://api.weixin.qq.com/cgi-bin/component/api_authorizer_token?component_access_token=%s' \
% self.get_com_access_token()
payload = {
"component_appid": self.component_appid,
"authorizer_appid": authorizer_appid,
"authorizer_refresh_token": authorizer_refresh_token
}
headers = {'content-type': 'application/json'}
response = requests.post(url, data=json.dumps(payload), headers=headers)
return response.json()
url = 'https://api.weixin.qq.com/cgi-bin/component/api_authorizer_token?component_access_token=%s' \
% self.get_com_access_token()
payload = {
"component_appid": self.component_appid,
"authorizer_appid": authorizer_appid,
"authorizer_refresh_token": authorizer_refresh_token
}
headers = {'content-type': 'application/json'}
response = requests.post(url, data=json.dumps(payload), headers=headers)
return response.json()
这里需要两个参数:
# authorizer_appid
# 授权方appid
# authorizer_refresh_token
# 授权方的刷新令牌,刷新令牌主要用于公众号第三方平台获取和刷新已授权用户的access_token,只会在授权时刻提供,请妥善保存。
# 我们一般将其保存在数据库中,因为你授权的公众号不止一个
# 授权方appid
# authorizer_refresh_token
# 授权方的刷新令牌,刷新令牌主要用于公众号第三方平台获取和刷新已授权用户的access_token,只会在授权时刻提供,请妥善保存。
# 我们一般将其保存在数据库中,因为你授权的公众号不止一个
现在我们看看我们的class WxOpenSDK,其代码如下:
class WxOpenCallback:
def __init__(self):
self.token = token
def check_signature(self, pams):
if not self.token:
return HttpResponse('TOKEN is not defined!')
msg_signature = pams.get('msg_signature', '')
timestamp = pams.get('timestamp', '')
nonce = pams.get('nonce', '')
tmparr = [self.token, timestamp, nonce]
tmparr.sort()
string = ''.join(tmparr)
string = hashlib.sha1(string).hexdigest()
# print signature
# print string
return msg_signature == string
class WxOpenSDK:
def __init__(self, ticket):
self.component_appid = component_appid
self.component_appsecret = component_appsecret
self.ticket = ticket
# something below...
def get_com_access_token(self):
# load file
json_file = open('com_access_token.json')
data = json.load(json_file)
json_file.close()
component_access_token = data['component_access_token']
now = time.time()
if data['expire_time'] < now:
url = "https://api.weixin.qq.com/cgi-bin/component/api_component_token"
payload = {'component_appid': self.component_appid,
'component_appsecret': self.component_appsecret,
'component_verify_ticket': self.ticket}
headers = {'content-type': 'application/json'}
response = requests.post(url, data=json.dumps(payload), headers=headers)
component_access_token = json.loads(response.text)['component_access_token']
data['component_access_token'] = component_access_token
data['expire_time'] = int(now) + 7000
# save file
json_file = open('com_access_token.json', 'w')
json_file.write(json.dumps(data))
json_file.close()
return component_access_token
def get_pre_auth_code(self):
# load file
json_file = open('pre_auth_code.json')
data = json.load(json_file)
json_file.close()
pre_auth_code = data['pre_auth_code']
now = time.time()
if data['expire_time'] < now:
url = "https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token=%s"\
% self.get_com_access_token()
payload = {'component_appid': self.component_appid}
headers = {'content-type': 'application/json'}
response = requests.post(url, data=json.dumps(payload), headers=headers)
pre_auth_code = json.loads(response.text)['pre_auth_code']
data['pre_auth_code'] = pre_auth_code
data['expire_time'] = int(now) + 1100
# save file
json_file = open('pre_auth_code.json', 'w')
json_file.write(json.dumps(data))
json_file.close()
return pre_auth_code
def get_authorization_info(self, authorization_code):
url = 'https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=%s' \
% self.get_com_access_token()
payload = {
"component_appid": self.component_appid,
"authorization_code": authorization_code
}
headers = {'content-type': 'application/json'}
response = requests.post(url, data=json.dumps(payload), headers=headers)
data = response.json()
return data['authorization_info']
def get_refresh_authorizer_access_token(self, authorizer_appid, authorizer_refresh_token):
url = 'https://api.weixin.qq.com/cgi-bin/component/api_authorizer_token?component_access_token=%s' \
% self.get_com_access_token()
payload = {
"component_appid": self.component_appid,
"authorizer_appid": authorizer_appid,
"authorizer_refresh_token": authorizer_refresh_token
}
headers = {'content-type': 'application/json'}
response = requests.post(url, data=json.dumps(payload), headers=headers)
return response.json()
def __init__(self):
self.token = token
def check_signature(self, pams):
if not self.token:
return HttpResponse('TOKEN is not defined!')
msg_signature = pams.get('msg_signature', '')
timestamp = pams.get('timestamp', '')
nonce = pams.get('nonce', '')
tmparr = [self.token, timestamp, nonce]
tmparr.sort()
string = ''.join(tmparr)
string = hashlib.sha1(string).hexdigest()
# print signature
# print string
return msg_signature == string
class WxOpenSDK:
def __init__(self, ticket):
self.component_appid = component_appid
self.component_appsecret = component_appsecret
self.ticket = ticket
# something below...
def get_com_access_token(self):
# load file
json_file = open('com_access_token.json')
data = json.load(json_file)
json_file.close()
component_access_token = data['component_access_token']
now = time.time()
if data['expire_time'] < now:
url = "https://api.weixin.qq.com/cgi-bin/component/api_component_token"
payload = {'component_appid': self.component_appid,
'component_appsecret': self.component_appsecret,
'component_verify_ticket': self.ticket}
headers = {'content-type': 'application/json'}
response = requests.post(url, data=json.dumps(payload), headers=headers)
component_access_token = json.loads(response.text)['component_access_token']
data['component_access_token'] = component_access_token
data['expire_time'] = int(now) + 7000
# save file
json_file = open('com_access_token.json', 'w')
json_file.write(json.dumps(data))
json_file.close()
return component_access_token
def get_pre_auth_code(self):
# load file
json_file = open('pre_auth_code.json')
data = json.load(json_file)
json_file.close()
pre_auth_code = data['pre_auth_code']
now = time.time()
if data['expire_time'] < now:
url = "https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token=%s"\
% self.get_com_access_token()
payload = {'component_appid': self.component_appid}
headers = {'content-type': 'application/json'}
response = requests.post(url, data=json.dumps(payload), headers=headers)
pre_auth_code = json.loads(response.text)['pre_auth_code']
data['pre_auth_code'] = pre_auth_code
data['expire_time'] = int(now) + 1100
# save file
json_file = open('pre_auth_code.json', 'w')
json_file.write(json.dumps(data))
json_file.close()
return pre_auth_code
def get_authorization_info(self, authorization_code):
url = 'https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=%s' \
% self.get_com_access_token()
payload = {
"component_appid": self.component_appid,
"authorization_code": authorization_code
}
headers = {'content-type': 'application/json'}
response = requests.post(url, data=json.dumps(payload), headers=headers)
data = response.json()
return data['authorization_info']
def get_refresh_authorizer_access_token(self, authorizer_appid, authorizer_refresh_token):
url = 'https://api.weixin.qq.com/cgi-bin/component/api_authorizer_token?component_access_token=%s' \
% self.get_com_access_token()
payload = {
"component_appid": self.component_appid,
"authorizer_appid": authorizer_appid,
"authorizer_refresh_token": authorizer_refresh_token
}
headers = {'content-type': 'application/json'}
response = requests.post(url, data=json.dumps(payload), headers=headers)
return response.json()
接下来,我们会进行第六节。
0 0
- 微信公众号第三方平台开发PYTHON教程 PART 5
- 微信公众号第三方平台开发PYTHON教程 PART 1
- 微信公众号第三方平台开发PYTHON教程 PART 2
- 微信公众号第三方平台开发PYTHON教程 PART 3
- 微信公众号第三方平台开发PYTHON教程 PART 4
- 微信公众号第三方平台开发PYTHON教程 PART 6
- 微信公众号第三方平台开发PYTHON教程 PART 7
- 微信公众号第三方平台开发PYTHON教程 PART 8
- 微信公众号第三方平台开发PYTHON教程 PART 9
- 微信开放平台 公众号第三方平台开发 教程二 创建公众号第三方平台
- 微信开放平台公众号第三方平台开发 教程一 平台介绍
- 微信开放平台公众号第三方平台开发 教程一 平台介绍
- 微信开放平台公众号第三方平台开发 教程一 平台介绍
- 微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台
- 微信公众号第三方开发之一创建微信公众号第三方平台
- 微信开放平台 公众号第三方平台开发 教程五 代公众号发起网页授权源码
- 微信公众号第三方平台开发 授权流程
- 微信公众号第三方平台开发笔记--01创建第三方平台
- scaleType
- java的动态绑定与静态绑定
- 动态规划之切割钢条
- 安装mysqldb遇到c1083问题的解决办法
- Linux initrd详解
- 微信公众号第三方平台开发PYTHON教程 PART 5
- 继承中的向上类型转换
- bzoj1571 滑雪课Ski
- Matplotlib学习笔记1-2D绘图
- 关于no rule to make target kernel/bounds.c错误的一种解决办法
- ORA-02051问题
- gdb 查看死锁
- 机器学习中为什么需要对数据进行归一化?
- HDOJ1297