国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

Node.js微信 access_token ( jsapi_ticket ) 存取與刷新的示例

2024-05-06 16:40:07
字體:
來源:轉載
供稿:網友

access_token

微信文檔里存在兩種access_token:普通 access_token 和 網頁授權 access_token。具體區別參考:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

以下提到的 access_token 均為普通的 access_token

1. 首先我們先去看看是如何請求 access_token 的? 微信公眾平臺技術文檔

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

正常返回:{"access_token":"ACCESS_TOKEN","expires_in":7200}

錯誤返回:{"errcode":40013,"errmsg":"invalid appid"}

2. 所以獲取 access_token 的代碼如下:

const request = require('request') // 請安裝第三方包 requestrequest.get({  uri: 'https://api.weixin.qq.com/cgi-bin/token',  json: true,  qs: {   grant_type: 'client_credential',   appid: APPID, // APPID請換成你的 appid   secret: APPSECRET // APPSECRET請換成你的 appsecret  } }, (err, res, body) => {  if (err) {   console.log(err)   return  }  console.log(body)  if (body.errcode) {   // 返回錯誤時的處理   return  }})

3. guard_dog 實現數據持久化和定時刷新

guard_dog 會生成 .dog 文件,每個文件對應一個KEY

const guard_dog = require('guard_dog') // 請安裝第三方包 guard_dogguard_dog.init(KEY, (handler) => { // KEY是guard_dog存取數據的鍵名 // 拿到數據后調用 handler handler(DATA, EXPIREDS_IN) // DATA是要持久化的數據,EXPIREDS_IN是數據的有效時間,單位是秒}, DIR) // DIR是 .dog 文件的存放目錄,這個參數可以不傳

4. 現在把以上兩塊代碼合并起來就是我們要的效果

const request = require('request')const guard_dog = require('guard_dog')guard_dog.init('ACCESS_TOKEN', (handler) => { request.get({  uri: 'https://api.weixin.qq.com/cgi-bin/token',  json: true,  qs: {   grant_type: 'client_credential',   appid: APPID, // APPID請換成你的 appid   secret: APPSECRET // APPSECRET請換成你的 appsecret  } }, (err, res, body) => {  if (err) {   console.log(err)   return  }  console.log(body)  if (body.errcode) {   return  }  handler(body.access_token, body.expires_in) })}) // 如有需要指定目錄,可以再給 guard_dog.init 多傳個參數

5. guard_dog 初始化這個 key 之后,獲取到的都是有效的值了。guard_dog 獲取值代碼如下:

guard_dog.get('ACCESS_TOKEN', (data) => { // 上面初始化時用的鍵名為'ACCESS_TOKEN',所以這里取值也要用這個鍵名 // 在這里拿到的 data 就是 access_token 了})

6.如果想用著方便點,可以直接封裝成一個模塊

access_token.js

const request = require('request')const guard_dog = require('guard_dog')// 加載這個模塊的時候給 ACCESS_TOKEN 這個鍵名初始化guard_dog.init('ACCESS_TOKEN', (handler) => { request.get({  uri: 'https://api.weixin.qq.com/cgi-bin/token',  json: true,  qs: {   grant_type: 'client_credential',   appid: APPID, // APPID請換成你的 appid   secret: APPSECRET // APPSECRET請換成你的 appsecret  } }, (err, res, body) => {  if (err) {   console.log(err)   return  }  console.log(body)  if (body.errcode) {   return  }  handler(body.access_token, body.expires_in) })}) // 只要向外暴露一個獲取值的方法就可以了module.exports = function (callback) { guard_dog.get('ACCESS_TOKEN', callback)}

使用:

const access_token = require('./access_token') // 這里把這個模塊與 access_token 模塊當成在同一目錄下來作為例子。access_token((data) => { // 這個 data 就是 access_token})

jsapi_ticket

jsapi_ticket 官方文檔說明

上面關于 access_token 的例子已經說得很詳細了,jsapi_ticket 處理起來也大同小異,所以下面直接貼代碼了:

(需要注意一點:獲取 jsapi_ticket 需要依賴 access_token,下面的代碼直接依賴了上面所寫的 access_token.js)

jsapi_ticket.js

const request = require('request')const guard_dog = require('guard_dog')const access_token = require('./access_token')guard_dog.init('JSAPI_TICKET', (handler) => { access_token((access_token) => {  request.get({   uri: 'https://api.weixin.qq.com/cgi-bin/ticket/getticket',   json: true,   qs: {    access_token: access_token,    type: 'jsapi'   }  }, (err, res, body) => {   if (err) {    console.log(err)    return   }   console.log(body)   if (body.errcode) {    return   }   handler(body.ticket, body.expires_in)  }) })})module.exports = function (callback) { guard_dog.get('JSAPI_TICKET', callback)}

使用:

const jsapi_ticket = require('./jsapi_ticket')jsapi_ticket((data) => { // 這個 data 就是 jsapi_ticket})

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 莱州市| 内丘县| 施甸县| 怀来县| 佛学| 新宁县| 玛多县| 绥芬河市| 封开县| 张家界市| 固镇县| 翼城县| 临安市| 广宗县| 壶关县| 申扎县| 荥阳市| 乌鲁木齐县| 宜都市| 巨鹿县| 永吉县| 印江| 盐山县| 阿拉善右旗| 根河市| 渝中区| 泸州市| 莱阳市| 昭苏县| 刚察县| 大城县| 武强县| 聂拉木县| 从江县| 扬州市| 隆德县| 博湖县| 苏州市| 台安县| 仁布县| 保山市|