nodejs 애플 릿 코드 생 성 실현
하나 먼저 애플 릿 코드 의 역할 은 사용자 가 위 챗 을 통 해 애플 릿 코드 를 스 캔 하여 애플 릿 의 특정한 페이지 에 들 어 갈 수 있다 는 것 이다. 예 를 들 어 특정한 상품 이나 누군가의 홈 페이지 등 이다.작은 프로그램 코드 가 생 성 될 때 파 라 메 터 를 휴대 할 수 있 습 니 다. 우 리 는 작은 프로그램 코드 가 뛰 는 페이지 에서 파 라 메 터 를 받 아 해당 하 는 조작 을 할 수 있 습 니 다.
2. 애플 릿 코드 가 생 성 되 는 대체 적 인 과정 은 바로 appid 와 appserect 를 통 해 accesstoken 을 바 꾼 다음 에 accesstoken 에 다른 매개 변 수 를 추가 하여 애플 릿 코드 를 바 꾸 는 것 입 니 다.appid 와 appserect 로 access token 을 어떻게 얻 는 지 에 대해 저 는 군말 하 는 것 을 좋아 하지 않 습 니 다. 인터넷 에 많은 자 료 를 참고 할 수 있 습 니 다.
3. 다음은 편집장 의 실현 방식 을 공유 합 시다.
1. 먼저 accesstoken 을 가 져 옵 니 다.이 코드 는 accesstoken 을 검사 하고 업데이트 한 것 입 니 다.애플 릿 은 accesstoken 을 많이 사용 하고 매일 가 져 오 는 횟수 가 제한 되 어 있 기 때문에 저 는 가 져 온 accesstoken 을 데이터베이스 에 저장 하고 사용 할 때마다 accesstoken 에 대해 업 데 이 트 를 검사 하여 실 효 를 피 합 니 다.
g.js
var util = require('../getCode/libs/access_tokenManager')// access_token
var Promise = require('bluebird');// Promise,
var request = Promise.promisify(require('request'));
var prefix = 'https://api.weixin.qq.com/cgi-bin/';// API
var conf = require('../config.js')
var api = {
accessToken: prefix + 'token?grant_type=client_credential'
}
function checkToken(opts) {
var that = this;
this.appID = conf.appId;
this.appSecret = conf.appSecret;
this.getAccessToken = opts.getAccessToken;
this.saveAccessToken = opts.saveAccessToken;
this.data = '';
// getAccessToken
that.getAccessToken().then(function (data) {
try {
console.log('data=' + data);
data = (JSON.parse(data))[0];
console.log('datadatadatadatadata', data);
}
catch (e) {
console.log('netscape');
return that.updateAccessToken();
}
if (that.isValidAccessToken(data)) {
console.log(' ', data);
that.data = data
Promise.resolve(data);
}
else {
return that.updateAccessToken();
}
})
.then(function (data) {
data = data ? data : that.data
that.access_token = data.access_token;
that.expires_in = data.expires_in;
that.saveAccessToken(data);
})
}
//
checkToken.prototype.isValidAccessToken = function (data) {
if (!data || !data.access_token || !data.expires_in) {
return false;
}
var access_token = data.access_token;
var expires_in = data.expires_in;
console.log('token expires_in', expires_in);
var now = (new Date().getTime())
if (now < expires_in) {
console.log('token ');
return true;
} else {
return false;
}
}
checkToken.prototype.updateAccessToken = function () {
var appID = this.appID;
var appSecret = this.appSecret;
var url = api.accessToken + '&appid=' + appID + '&secret=' + appSecret;
return new Promise(function (resolve, reject) {
request({ url: url, json: true }, function (error, response, body) {
if (!error && response.statusCode === 200) {
var data = body;
var now = (new Date().getTime());
var expires_in = now + (data.expires_in - 20) * 1000;
data.expires_in = expires_in;
resolve(data);
} else {
reject()
}
});
})
}
module.exports = function (opts){
var CheckToken= new checkToken(opts);
}
2. QR 코드 를 생 성하 고 QR 코드 를 특정한 경로 에 저장 합 니 다.
'use strict'
var Koa = require('koa')// koa
var path = require('path')// path
var wechat = require('../getCode/wechat/g')// access_token
//var util = require('../getCode/libs/util')//
var util = require('../getCode/libs/access_tokenManager')// access_token
var request = require('request');
var fs = require('fs');
var Promise = require('bluebird');
//
var config = {
wechat: {
fileName:'',
getAccessToken: function () {
// access_token
return util.readFileAsync(wechat_file);
},
saveAccessToken: function (data) {
// data = JSON.stringify(data)
// access_token
return util.writeFileAsync(data)
},
//
getQrcode: function (data,fileName) {
var postData = {
path: "pages/index/index",//
scene: fileName,//
width: 430,
auto_color: false
}
postData = JSON.stringify(postData);
request({
method: 'POST',
url: 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' + data.access_token,
body: postData
}).pipe(fs.createWriteStream('./images/' + fileName+'.png'));//
}
}
}
module.exports = async (ctx, next) => {
config.wechat.fileName = ctx.query.fileName;
wechat(config.wechat)
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.