微信公众号开发之获取公众号的access_token

为啥要获取公众号的access_token?

因为接下来要实现微信公众号的自定义菜单需要access_token,而且菜单的URl跳转第三方网页也要用到。

一、access_token简介

为了使第三方开发者能够为用户提供更多更有价值的个性化服务,微信公众平台 开放了许多接口,包括自定义菜单接口、客服接口、获取用户信息接口、用户分组接口、群发接口等,

开发者在调用这些接口时,都需要传入一个相同的参数 access_token,它是公众账号的全局唯一票据,它是接口访问凭证。

access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。

access_token的存储至少要保留512个字符空间。

access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的 access_token失效。

 

如果第三方不使用中控服务器,而是选择各个业务逻辑点各自去刷新access_token,那么就可能会产生冲突,导致服务不稳定。

公众号可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在微信公众平台官网-开发者中心页中获得(需要已经成为开发者,且帐号没有异常状态)。注意调用所有微信接口时均需使用https协议。

 

access_token的有效期是7200秒(两小时),在有效期内,可以一直使用,只有当access_token过期时,才需要再次调用接口 获取access_token。在理想情况下,一个7x24小时运行的系统,每天只需要获取12次access_token,即每2小时获取一次。如果在 有效期内,再次获取access_token,那么上一次获取的access_token将失效。

目前,获取access_token接口的调用频率限制为2000次/天,如果每次发送客服消息、获取用户信息、群发消息之前都要先调用获取 access_token接口得到接口访问凭证,这显然是不合理的,一方面会更耗时(多了一次接口调用操作),另一方面2000次/天的调用限制恐怕也不 够用。因此,在实际应用中,我们需要将获取到的access_token存储起来,然后定期调用access_token接口更新它,以保证随时取出的 access_token都是有效的。

 

 

官方的说明:

接口调用请求说明

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

 

参数说明

参数 是否必须 说明
grant_type 获取access_token填写client_credential
appid 第三方用户唯一凭证
secret 第三方用户唯一凭证密钥,即appsecret

 

返回说明

正常情况下,微信会返回下述JSON数据包给公众号:

{"access_token":"ACCESS_TOKEN","expires_in":7200}
参数 说明
access_token 获取到的凭证
expires_in 凭证有效时间,单位:秒


错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):

{"errcode":40013,"errmsg":"invalid appid"}

二、封装基本类

封装一下token类:</

微信公众号开发中,获取`access_token`是一个关键步骤,用于授权给你的应用访问微信接口的权限。以下是一般的流程: 1. **申请开发者账号**:首先,你需要在微信公众平台上注册一个开发者账号。 2. **设置AppID**: 获取到账号后,创建或管理你的公众号获取AppID(应用程序标识)。 3. **获取URL和密钥**:微信公众平台会提供一个服务器配置地址,包括一个加密签名(Secret),以及用来接收微信服务器消息的URL。 4. **发送请求**:使用AppID、Secret和上述配置,按照官方文档中的示例,构建HTTP GET请求到`https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={AppID}&secret={Secret}`。 示例: ```javascript const axios = require('axios'); async function getToken(appId, appSecret) { try { const response = await axios.get( 'https://api.weixin.qq.com/cgi-bin/token', { params: { grant_type: 'client_credential', appid: appId, secret: appSecret } } ); return response.data.access_token; // 返回的就是access_token值 } catch (error) { console.error('Error fetching access token:', error); throw error; } } ``` 5. **存储和刷新**:通常情况下,你需要定期刷新access_token,因为它的有效期较短(一般7200秒)。可以在每次调用需要此令牌的接口前检查其是否过期,如果过期则重新获取。 6. **安全考虑**:确保所有的请求和通信都是HTTPS,不要在前端直接暴露密钥,最好存储在一个安全的地方并只在后端使用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灰太狼_cxh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值