// 云函数入口文件
const cloud = require('wx-server-sdk')
const requestpromise = require('request-promise');
cloud.init()
async function getAccessToken(wxContext,add) {
const options = {
method: 'GET',
url: 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='+wxContext.APPID + '&secret=小程序appsecret',
};
let db = cloud.database({})
const result = await requestpromise(options);
let resultJson = JSON.parse(result)
if (resultJson.access_token) {
let data = {
accessToken: resultJson.access_token,
expiresIn: resultJson.expires_in,
createTime: Date.now(),
appID:wxContext.APPID,
}
// expires_in
if (add) {
await db.collection('accessToken').add({
// data 字段表示需新增的 JSON 数据
data: data,
success: function (res) {
// res 是一个对象,其中有 _id 字段标记刚创建的记录的 id
console.log(res)
}
})
} else {
await db.collection('accessToken').where({
appID:wxContext.APPID
}).update({
data:data
})
}
return {
code:'0',
message:'获取access_token成功',
result:resultJson,
}
} else {
return {
code:'-1',
message:'获取access_token失败'
}
}
}
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
//先从云函数数据库中获取accessToken
let db = cloud.database({})
const result = await db.collection('accessToken').where({
appID:wxContext.APPID
}).get()
if ( typeof result.data == 'object' && result.data.length) {
let info = result.data[0]
let {
accessToken,
expiresIn,
createTime
} = info
let timestamp = Date.now()
if (timestamp - createTime < expiresIn*1000) {
return {
code:'0',
message:'获取access_token成功',
access_token:accessToken,
}
} else {
//超时重新获取
let result = await getAccessToken(wxContext,false)
if (0 == result.code) {
return {
code:'0',
message:'获取access_token成功',
access_token:result.result.access_token,
}
} else {
return {
code:'-1',
message:'获取access_token失败'
}
}
}
} else {
let result = await getAccessToken(wxContext,true)
if (0 == result.code) {
return {
code:'0',
message:'获取access_token成功',
access_token:result.result.access_token,
}
} else {
return {
code:'-1',
message:'获取access_token失败'
}
}
}
}
微信云函数获取access_token
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 微信小程序云开发个人博客项目实战目录一、准备工作及引入 Vant Weapp 小程序 UI 组件库二、专题的增删改...
- 由于微信小程序不支持微信公众号获取access_token的域名配置,无法在小程序端通过wx.request()的...
- 关于 access_token access_token 是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使...
- 一直都想搞一下微信公众号网页开发,公司忙没有时间自己也没开发过所以也没有头绪,前两天通过自己的摸索以及自行查找的资...
- zabbix调用微信发短信可能用到的一些变量,获取方式如下: 1.corpID(公司ID) 在我的企业--企业信息...