最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年09月30日 14:09:28   作者:ELSS  
本篇文章主要介紹了Node.js微信 access_token ( jsapi_ticket ) 存取與刷新的示例,具有一定的參考價值,有興趣的可以了解一一下‘

access_token

微信文檔里存在兩種access_token:普通 access_token 和 網頁授權 access_token。具體區(qū)別參考: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') // 請安裝第三方包 request

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
  }
})

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

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

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

guard_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
})

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

相關文章

  • Node8中AsyncHooks異步生命周期

    Node8中AsyncHooks異步生命周期

    這篇文章主要介紹了Node8中AsyncHooks異步生命周期,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • nodejs實現登陸驗證功能

    nodejs實現登陸驗證功能

    這篇文章主要為大家詳細介紹了nodejs實現登陸驗證功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Node.js readline模塊與util模塊的使用

    Node.js readline模塊與util模塊的使用

    本篇文章主要介紹了Node.js readline模塊與util模塊的使用,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 零基礎之Node.js搭建API服務器的詳解

    零基礎之Node.js搭建API服務器的詳解

    今天小編就為大家分享一篇關于零基礎之Node.js搭建API服務器的詳解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • node.js中的fs.exists方法使用說明

    node.js中的fs.exists方法使用說明

    這篇文章主要介紹了node.js中的fs.exists方法使用說明,本文介紹了fs.exists方法說明、語法、接收參數、使用實例和實現源碼,需要的朋友可以參考下
    2014-12-12
  • NodeJs的優(yōu)勢和適合開發(fā)的程序

    NodeJs的優(yōu)勢和適合開發(fā)的程序

    做頁游或webqq這樣的應用nodejs有優(yōu)勢,但如果做微博、豆瓣、facebook這樣的社交網絡,nodejs還有優(yōu)勢嗎?另外不知道大家是什么原因選擇的nodejs?是因為應用需求還是對javascript這門語言的喜歡?
    2016-08-08
  • 使用Node.js處理前端代碼文件的編碼問題

    使用Node.js處理前端代碼文件的編碼問題

    這篇文章主要介紹了使用Node.js處理前端代碼文件的編碼問題的方法,Node自帶的相關類庫處理編碼方面的問題時還是比較得心應手的,需要的朋友可以參考下
    2016-02-02
  • npm一鍵安裝Python以及node-sass依賴環(huán)境的方法

    npm一鍵安裝Python以及node-sass依賴環(huán)境的方法

    Node-sass是一個庫,它將Node.js綁定到LibSass,下面這篇文章主要給大家介紹了關于npm一鍵安裝Python以及node-sass依賴環(huán)境的相關資料,文中還介紹了安裝node-sass報錯Python環(huán)境問題避坑指南,需要的朋友可以參考下
    2022-09-09
  • 為什么node.js不適合大型項目

    為什么node.js不適合大型項目

    這篇文章主要介紹了為什么node.js不適合大型項目,想了解node.js的同學,可以參考一下
    2021-04-04
  • 使用NestJS開發(fā)Node.js應用的方法

    使用NestJS開發(fā)Node.js應用的方法

    這篇文章主要介紹了使用NestJS開發(fā)Node.js應用的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12

最新評論

镇安县| 贵定县| 吉林省| 故城县| 聂荣县| 自贡市| 康定县| 枣阳市| 石棉县| 海原县| 花莲县| 静安区| 永安市| 静乐县| 新泰市| 通河县| 卢龙县| 同心县| 桐梓县| 惠水县| 灌云县| 定州市| 会泽县| 清新县| 平阴县| 旌德县| 巴青县| 林甸县| 伊通| 海南省| 北京市| 南雄市| 营口市| 文化| 南投县| 武定县| 依兰县| 望江县| 唐山市| 凯里市| 仪陇县|