Heim  >  Artikel  >  Web-Frontend  >  Node.js access_token implementiert WeChat-Zugriffs- und Aktualisierungsbeispiele

Node.js access_token implementiert WeChat-Zugriffs- und Aktualisierungsbeispiele

小云云
小云云Original
2018-01-27 14:46:012008Durchsuche

In diesem Artikel werden hauptsächlich Beispiele für den Zugriff und die Aktualisierung von Node.js WeChat access_token (jsapi_ticket) vorgestellt, die einen gewissen Referenzwert haben. Ich hoffe, dass es allen helfen kann.

access_token

Es gibt zwei access_tokens in WeChat-Dokumenten: gewöhnliches access_token und Web-Autorisierungs-access_token. Spezifische Unterschiede finden Sie unter: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

Die unten genannten Zugriffstokens sind alle gewöhnliche Zugriffstokens

1. Schauen wir uns zunächst an, wie man die technische Dokumentation der öffentlichen WeChat-Plattform anfordert.

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

Normale Rückgabe: {"access_token": "ACCESS_TOKEN", "expires_in":7200}

Fehlerrückgabe: {"errcode":40013," errmsg": "invalid appid"}

2. Der Code zum Erhalten des access_token lautet also wie folgt:


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 implementiert Datenpersistenz und Timing. Beim Aktualisieren

guard_dog generiert .dog-Dateien, wobei jede Datei einem SCHLÜSSEL entspricht


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 Die beiden oben genannten Codeteile sehen aus wie der gewünschte Effekt


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. Nachdem Guard_dog diesen Schlüssel initialisiert hat, sind alle erhaltenen Werte gültige Werte. Der Code für guard_dog zum Abrufen des Werts lautet wie folgt:


guard_dog.get('ACCESS_TOKEN', (data) => { // 上面初始化时用的键名为'ACCESS_TOKEN',所以这里取值也要用这个键名
 // 在这里拿到的 data 就是 access_token 了
})

6 Wenn Sie es bequemer machen möchten, können Sie ihn direkt in ein Modul kapseln

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

Verwendung:


const access_token = require('./access_token') // 这里把这个模块与 access_token 模块当成在同一目录下来作为例子。
access_token((data) => {
 // 这个 data 就是 access_token
})

jsapi_ticket

offizielle Dokumentation von jsapi_ticket

Das obige Beispiel zu access_token wurde ausführlich erläutert. Die Verarbeitung von jsapi_ticket ist ebenfalls sehr ähnlich, daher wird der Code direkt unten veröffentlicht:

( Eines ist zu beachten: Das Erhalten von jsapi_ticket muss auf access_token basieren, der folgende Code basiert direkt auf dem oben geschriebenen 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)
}

Verwendung:


const jsapi_ticket = require('./jsapi_ticket')
jsapi_ticket((data) => {
 // 这个 data 就是 jsapi_ticket
})

Verwandte Empfehlungen:

Analyse des Entwicklungsprozesses eines Beispiels für den Zugriff auf PHP-Baumstrukturdaten

Lösung für das Problem mit PHP-Zugriff auf MySQL 4.1 mit verstümmeltem Code

PHP implementiert den Effekt der Verschlüsselung von Textdateien und der Einschränkung des Zugriffs auf bestimmte Seiten_php-Beispiel

Das obige ist der detaillierte Inhalt vonNode.js access_token implementiert WeChat-Zugriffs- und Aktualisierungsbeispiele. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn