基于微信小程序云函數(shù)的方式獲取微信公眾號access_token

由于微信小程序不支持微信公眾號獲取access_token的域名配置歼培,無法在小程序端通過wx.request()的方式來獲取access_token叼屠,以下是獲取微信公眾號access_token的域名,經(jīng)過幾番折騰欢搜,終于實(shí)現(xiàn)了基于云開發(fā)中云函數(shù)的功能實(shí)現(xiàn)了access_token的獲取牛曹,并存入云數(shù)據(jù)庫中。

https://api.weixin.qq.com

首先在云數(shù)據(jù)庫中新建集合名稱"access_token",并新建字段_id瓢娜、accessToken挂洛、createTime、expiresIn用來存儲access_token值及有效時(shí)間眠砾。

在云函數(shù)中新建類AccessToken

const cloud = require('wx-server-sdk')

const request = require('request')

class AccessToken{

constructor({ appid, secret}){

this.appid=appid

this.secret=secret

}

}

module.exports=AccessToken

在AccessToken類中新建函數(shù)getAccessToken()用來獲取access_token

// 獲取 access_token

async getAccessToken() {

let token_url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='+this.appid+'&'+'secret='+this.secret;

const rp = options =>

new Promise((resolve, reject) => {

request(options, (error, response, body) => {

if (error) {

reject(error);

}

resolve(response);

});

});

const result = await rp({

url:token_url,

method:'GET'

});

return (typeof result.body === 'object') ? result.body : JSON.parse(result.body);;

}

然后再新建函數(shù)getCacheToken()調(diào)用getAccessToken()獲得access_token并存入云數(shù)據(jù)庫中

async getCacheToken(){

let collection = 'access_token';//數(shù)據(jù)庫集合名稱

let gapTime = 300000; // 5 分鐘

cloud.init();

let db = cloud.database();

let result = await db.collection(collection).get();

if (result.code) {

return null;

}

// 數(shù)據(jù)庫沒有虏劲,獲取

if (!result.data.length) {

let accessTokenBody = await this.getAccessToken();

let act = accessTokenBody.access_token;

let ein = accessTokenBody.expires_in * 1000;

await db.collection(collection).add({

data: {

_id: 1,

accessToken: act,

expiresIn: ein,

createTime: Date.now()}

});

return act;

}

else {

let data = result.data[0];

let {

_id,

accessToken,

expiresIn,

createTime

} = data;

// 判斷access_token是否有效

if (Date.now() < createTime + expiresIn - gapTime) {

return accessToken;

}

// 失效,重新獲取

else {

let accessTokenBody = await this.getAccessToken();

let act = accessTokenBody.access_token;

let ein = accessTokenBody.expires_in * 1000;

await db.collection(collection).doc(_id).set({

_id: 1,

accessToken: act,

expiresIn: ein,

createTime: Date.now()

});

return accessTokenBody.access_token;

}

}

}

在云函數(shù)入口文件中聲明并傳入微信公眾號開發(fā)者id及secret_key即可荠藤,然后在小程序客戶端調(diào)用云函數(shù)即可獲取

// 云函數(shù)入口文件

const cloud = require('wx-server-sdk');

const request = require('request');

const access_token = require('AccessToken');//引入AccessToken類

cloud.init()

let appid ='*************';//微信公眾號開發(fā)者id

let secret ='*******';//微信公眾號開發(fā)者secret_key

// 云函數(shù)入口函數(shù)

exports.main = async (event, context) => {

let atn = new access_token({

appid,

secret

});

return atn.getCacheToken();

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末伙单,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子哈肖,更是在濱河造成了極大的恐慌吻育,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,331評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淤井,死亡現(xiàn)場離奇詭異布疼,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)币狠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評論 3 398
  • 文/潘曉璐 我一進(jìn)店門游两,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人漩绵,你說我怎么就攤上這事贱案。” “怎么了止吐?”我有些...
    開封第一講書人閱讀 167,755評論 0 360
  • 文/不壞的土叔 我叫張陵宝踪,是天一觀的道長。 經(jīng)常有香客問我碍扔,道長瘩燥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,528評論 1 296
  • 正文 為了忘掉前任不同,我火速辦了婚禮厉膀,結(jié)果婚禮上溶耘,老公的妹妹穿的比我還像新娘。我一直安慰自己服鹅,他們只是感情好凳兵,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,526評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著菱魔,像睡著了一般留荔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上澜倦,一...
    開封第一講書人閱讀 52,166評論 1 308
  • 那天聚蝶,我揣著相機(jī)與錄音,去河邊找鬼藻治。 笑死碘勉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的桩卵。 我是一名探鬼主播验靡,決...
    沈念sama閱讀 40,768評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼雏节!你這毒婦竟也來了胜嗓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,664評論 0 276
  • 序言:老撾萬榮一對情侶失蹤钩乍,失蹤者是張志新(化名)和其女友劉穎辞州,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寥粹,經(jīng)...
    沈念sama閱讀 46,205評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡变过,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,290評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了涝涤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片媚狰。...
    茶點(diǎn)故事閱讀 40,435評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖阔拳,靈堂內(nèi)的尸體忽然破棺而出崭孤,到底是詐尸還是另有隱情,我是刑警寧澤糊肠,帶...
    沈念sama閱讀 36,126評論 5 349
  • 正文 年R本政府宣布辨宠,位于F島的核電站,受9級特大地震影響罪针,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜黄伊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,804評論 3 333
  • 文/蒙蒙 一泪酱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦墓阀、人聲如沸毡惜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽经伙。三九已至,卻和暖如春勿锅,著一層夾襖步出監(jiān)牢的瞬間帕膜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工溢十, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留垮刹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,818評論 3 376
  • 正文 我出身青樓张弛,卻偏偏與公主長得像荒典,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子吞鸭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,442評論 2 359