真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Node.js微信access_token存取與刷新的示例分析

這篇文章主要介紹Node.js微信access_token存取與刷新的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

公司主營(yíng)業(yè)務(wù):網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶(hù)真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶(hù)帶來(lái)驚喜。成都創(chuàng)新互聯(lián)公司推出呼瑪免費(fèi)做網(wǎng)站回饋大家。

access_token

微信文檔里存在兩種access_token:普通 access_token 和 網(wǎng)頁(yè)授權(quán) access_token。

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

1. 首先我們先去看看是如何請(qǐng)求 access_token 的? 微信公眾平臺(tái)技術(shù)文檔

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

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

錯(cuò)誤返回:{"errcode":40013,"errmsg":"invalid appid"}

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

const request = require('request') // 請(qǐng)安裝第三方包 request

request.get({
  uri: 'https://api.weixin.qq.com/cgi-bin/token',
  json: true,
  qs: {
   grant_type: 'client_credential',
   appid: APPID, // APPID請(qǐng)換成你的 appid
   secret: APPSECRET // APPSECRET請(qǐng)換成你的 appsecret
  }
 }, (err, res, body) => {
  if (err) {
   console.log(err)
   return
  }
  console.log(body)
  if (body.errcode) {
   // 返回錯(cuò)誤時(shí)的處理
   return
  }
})

3. guard_dog 實(shí)現(xiàn)數(shù)據(jù)持久化和定時(shí)刷新

guard_dog 會(huì)生成 .dog 文件,每個(gè)文件對(duì)應(yīng)一個(gè)KEY

const guard_dog = require('guard_dog') // 請(qǐng)安裝第三方包 guard_dog

guard_dog.init(KEY, (handler) => { // KEY是guard_dog存取數(shù)據(jù)的鍵名
 // 拿到數(shù)據(jù)后調(diào)用 handler
 handler(DATA, EXPIREDS_IN) // DATA是要持久化的數(shù)據(jù),EXPIREDS_IN是數(shù)據(jù)的有效時(shí)間,單位是秒
}, DIR) // DIR是 .dog 文件的存放目錄,這個(gè)參數(shù)可以不傳

4. 現(xiàn)在把以上兩塊代碼合并起來(lái)就是我們要的效果

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請(qǐng)換成你的 appid
   secret: APPSECRET // APPSECRET請(qǐng)換成你的 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 多傳個(gè)參數(shù)

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

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

6.如果想用著方便點(diǎn),可以直接封裝成一個(gè)模塊

access_token.js

const request = require('request')
const guard_dog = require('guard_dog')
// 加載這個(gè)模塊的時(shí)候給 ACCESS_TOKEN 這個(gè)鍵名初始化
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請(qǐng)換成你的 appid
   secret: APPSECRET // APPSECRET請(qǐng)換成你的 appsecret
  }
 }, (err, res, body) => {
  if (err) {
   console.log(err)
   return
  }
  console.log(body)
  if (body.errcode) {
   return
  }
  handler(body.access_token, body.expires_in)
 })
}) 
// 只要向外暴露一個(gè)獲取值的方法就可以了
module.exports = function (callback) {
 guard_dog.get('ACCESS_TOKEN', callback)
}

使用:

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

jsapi_ticket

jsapi_ticket 官方文檔說(shuō)明

上面關(guān)于 access_token 的例子已經(jīng)說(shuō)得很詳細(xì)了,jsapi_ticket 處理起來(lái)也大同小異,所以下面直接貼代碼了:

(需要注意一點(diǎn):獲取 jsapi_ticket 需要依賴(lài) access_token,下面的代碼直接依賴(lài)了上面所寫(xiě)的 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) => {
 // 這個(gè) data 就是 jsapi_ticket
})

以上是“Node.js微信access_token存取與刷新的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


分享題目:Node.js微信access_token存取與刷新的示例分析
網(wǎng)頁(yè)網(wǎng)址:http://weahome.cn/article/goghcs.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部