Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >微信公众号-接口凭据

微信公众号-接口凭据

作者头像
星哥玩云
发布于 2022-09-14 09:58:50
发布于 2022-09-14 09:58:50
1K00
代码可运行
举报
文章被收录于专栏:开源部署开源部署
运行总次数:0
代码可运行

access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效

原理:

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET发起GET请求

正确的返回值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "access_token":"ACCESS_TOKEN",
    "expires_in":7200
}

错误的返回值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "errcode":40013,
    "errmsg":"invalid appid"
}

DJango服务代码实现

myApp/accessToken.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<span class="hljs-keyword">import</span> time
<span class="hljs-keyword">import</span> requests
<span class="hljs-keyword">import</span> json

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">AccessToken</span>:</span>
    _access_token = {
        <span class="hljs-string">"token"</span>:<span class="hljs-string">""</span>,
        <span class="hljs-string">"updatatime"</span>:time.time()
    }
<span class="hljs-meta">    @classmethod</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">updateAccessToken</span><span class="hljs-params">(cls, grant_type, appid, secret)</span>:</span>
        url = <span class="hljs-string">"https://api.weixin.qq.com/cgi-bin/token?grant_type=%s&amp;appid=%s&amp;secret=%s"</span>%(grant_type, appid, secret)
        res = requests.get(url)
        resDit = json.loads(res.content)
        <span class="hljs-keyword">if</span> resDit[<span class="hljs-string">"access_token"</span>]:
            cls._access_token[<span class="hljs-string">"token"</span>] = resDit[<span class="hljs-string">"access_token"</span>]
            cls._access_token[<span class="hljs-string">"updatatime"</span>] = time.time()

<span class="hljs-meta">    @classmethod</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">getAccessToken</span><span class="hljs-params">(cls, grant_type, appid, secret)</span>:</span>
        <span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> cls._access_token[<span class="hljs-string">"token"</span>] <span class="hljs-keyword">or</span> (time.time() - cls._access_token[<span class="hljs-string">"updatatime"</span>]) &gt;= <span class="hljs-number">6500</span>:
            <span class="hljs-comment"># 更新token</span>
            cls.updateAccessToken(grant_type, appid, secret)
        <span class="hljs-keyword">return</span> cls._access_token[<span class="hljs-string">"token"</span>]

myApp/urls.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<span class="hljs-keyword">from</span> django.urls <span class="hljs-keyword">import</span> path, re_path
<span class="hljs-keyword">from</span> myApp <span class="hljs-keyword">import</span> views

urlpatterns = [
    path(<span class="hljs-string">r'index/'</span>, views.index),
    path(<span class="hljs-string">r'weixin/'</span>, views.weixin),
    path(<span class="hljs-string">r'access/'</span>, views.access),
]

myApp/views.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<span class="hljs-keyword">from</span> django.shortcuts <span class="hljs-keyword">import</span> render, HttpResponse
<span class="hljs-keyword">from</span> django.views.decorators.csrf <span class="hljs-keyword">import</span> csrf_exempt
<span class="hljs-keyword">import</span> hashlib
<span class="hljs-keyword">from</span> myApp.accessToken <span class="hljs-keyword">import</span> AccessToken

<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">index</span><span class="hljs-params">(request)</span>:</span>
    <span class="hljs-keyword">return</span> HttpResponse(<span class="hljs-string">"sunck is a good man"</span>)

<span class="hljs-meta">@csrf_exempt</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">weixin</span><span class="hljs-params">(request)</span>:</span>
    <span class="hljs-keyword">pass</span>
            
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">access</span><span class="hljs-params">(request)</span>:</span>
    access_token = AccessToken.getAccessToken(<span class="hljs-string">"client_credential"</span>, <span class="hljs-string">"wxffde55b11cc79754"</span>, <span class="hljs-string">"84e86527f090d6238ea1c0b96f5fc753"</span>)
    <span class="hljs-keyword">return</span> HttpResponse(access_token)      

自有平台获取参数:

测试平台获取参数:

浏览器地址栏输入:http://39.107.226.105/access/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
flask扩展 flask-celery
一、flask-celery安装 pip install celery pip install redis==2.10.6 pip install flask-celery-helper 二、创建和加载 工程目录下创建run_celery.py文件 <span class="hljs-comment">#定义创建celery对象的方法</span> <span class="hljs-keyword">from</span> celery <span class="hljs-keyword">import<
星哥玩云
2022/09/14
2650
flask扩展 flask-cache
sudo vim /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/flask_cache/jinja2ext.py
星哥玩云
2022/09/14
3270
flask扩展 flask-cache
cookie操作
set_cookie(name, value, domain=None, expires=None, path=’/’, expires_days=None)
星哥玩云
2022/09/14
4920
cookie操作
高阶应用-celery
用户发起request,并且要等待response返回。但是在视图中有一些耗时的操作,导致用户可能会等待很长时间才能接受response,这样用户体验很差
星哥玩云
2022/09/14
4090
用户验证
用户验证是指在收到用户请求后进行处理前先判断用户的认证状态(如登陆状态),若通过验证则正常处理,否则强制用户跳转至认证页面(如登陆页面)
星哥玩云
2022/09/14
9080
用户验证
SpringBoot 企业微信点餐系统实战三:商品信息及买家商品api开发
按照数据库的字段写出对应的实体类 ProductInfo。@Data 是 lombok 的注解,用于自动生成 getter, setter, toString 方法,不懂的可以自行查询相关资料。
solocoder
2022/04/06
6910
SpringBoot 企业微信点餐系统实战三:商品信息及买家商品api开发
微信公众号-消息收发原理
当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上
星哥玩云
2022/09/14
6670
微信公众号-消息收发原理
request对象(请求对象)
一、作用 获取请求报文中传递的数据 二、概述 浏览器发送到服务器的所有报文被flask接收后,创建出request对象,request被用在视图函数中,获取请求的数据 request对象由flask框架创建好,通过引入后就可以在视图中使用 导入 from flask import request 三、request属性 url 完整的请求URL base_url 去掉GET参数的URL url_root 去掉了?后面的参数 host_url 只有主机IP和端
星哥玩云
2022/09/14
1.1K0
面向对象-访问限制
使用@property让私有属性可以使用点语法。但本质上还是调用公有方法访问的私有属性,只不过看起来比较美丽
星哥玩云
2022/09/08
1.1K0
后台管理-Admin站点管理
在settinngs.py文件中的INSTALLED_APPS中添加’django.contrib.admin’ 默认是已经添加好的
星哥玩云
2022/09/14
1.6K0
相关推荐
flask扩展 flask-celery
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文