>  기사  >  웹 프론트엔드  >  Node.js access_token은 WeChat 액세스 및 새로 고침 예시를 구현합니다.

Node.js access_token은 WeChat 액세스 및 새로 고침 예시를 구현합니다.

小云云
小云云원래의
2018-01-27 14:46:011946검색

이 글은 특정 참고 가치가 있는 Node.js WeChat access_token ( jsapi_ticket ) 액세스 및 새로 고침의 예를 주로 소개합니다. 관심이 있으시면 모두에게 도움이 되길 바랍니다.

access_token

WeChat 문서에는 일반 access_token과 웹 인증 access_token이라는 두 가지 access_token이 있습니다. 구체적인 차이점은 다음을 참조하세요: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

아래에 언급된 access_tokens는 모두 일반적인 access_tokens입니다

1. access_token 요청 방법 :" ACCESS_TOKEN","expires_in":7200}


Error return: {"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에 해당합니다. want


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이 이 키를 초기화한 후 모든 유효한 값을 얻습니다. 값을 얻기 위한 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
})

관련 권장 사항:


php 트리 구조 데이터 액세스 인스턴스 개발 프로세스 분석

해결책 PHP 액세스 mysql 4.1 잘못된 코드 문제

PHP는 텍스트 파일을 암호화하고 특정 페이지에 대한 액세스를 제한하는 효과를 구현합니다_php 예제

위 내용은 Node.js access_token은 WeChat 액세스 및 새로 고침 예시를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.