// 云函數(shù)入口文件
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 數(shù)據(jù)
data: data,
success: function (res) {
// res 是一個(gè)對(duì)象,其中有 _id 字段標(biāo)記剛創(chuàng)建的記錄的 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失敗'
}
}
}
// 云函數(shù)入口函數(shù)
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
//先從云函數(shù)數(shù)據(jù)庫(kù)中獲取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 {
//超時(shí)重新獲取
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失敗'
}
}
}
}
微信云函數(shù)獲取access_token
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 微信小程序云開(kāi)發(fā)個(gè)人博客項(xiàng)目實(shí)戰(zhàn)目錄一、準(zhǔn)備工作及引入 Vant Weapp 小程序 UI 組件庫(kù)二、專題的增刪改...
- 由于微信小程序不支持微信公眾號(hào)獲取access_token的域名配置,無(wú)法在小程序端通過(guò)wx.request()的...
- 關(guān)于 access_token access_token 是公眾號(hào)的全局唯一接口調(diào)用憑據(jù),公眾號(hào)調(diào)用各接口時(shí)都需使...
- 一直都想搞一下微信公眾號(hào)網(wǎng)頁(yè)開(kāi)發(fā),公司忙沒(méi)有時(shí)間自己也沒(méi)開(kāi)發(fā)過(guò)所以也沒(méi)有頭緒,前兩天通過(guò)自己的摸索以及自行查找的資...
- zabbix調(diào)用微信發(fā)短信可能用到的一些變量,獲取方式如下: 1.corpID(公司ID) 在我的企業(yè)--企業(yè)信息...