[Node.js+Express 위챗 공중번호 개발] 2단계:access_token 인터페이스

3525 단어 위챗expressnode.js

1. 인터페이스 구축


지난번 글에서 디렉터리 구조를 자세히 살펴보면 루트 루트는 우리가 node 서비스를 놓고 루트를 정의한 디렉터리이다. 원래users 파일을 생성했는데 일시적인 용도가 크지 않아서 우리는 이 루트를 직접 변경할 수 있다.그림과 같이 getAccessToken을 각각 변경합니다.js.
그리고 우리 앱으로 가자.js에서 입구 설정을 변경합니다.
완료, 파일을 서버에 업데이트합니다$ nodemon npm start 서비스 시작
그리고 서버에 입력: 당신의 ip/get Access Token, 검증해 보세요. 다음 그림과 같으면 축하합니다. 첫 번째 성공입니다!

2. getAccessToken 인터페이스 다시 쓰기


좋아, 지난번에 우리는 이미 인터페이스를 완성했으니, 다음은 이 인터페이스를 보완하자.우선, 위챗의 문서를 먼저 읽는 것을 권장합니다.access 알아보기_token.

1. json 파일 만들기,access_ 저장token


2. js에 json을 도입하고 인터페이스 출력 테스트


3. 데이터 디렉터리에 config를 만듭니다.json은 위챗의 기본 설정 정보를 저장합니다.


이상의 검증 후,config를 계속 만듭니다.기본 구성 정보를 저장하는 json 파일은 다음과 같습니다.
{
    "token":"WeiChartToken",
    "appID":"wx00********396", // appid  
    "appScrect":"326466*********e18f", // appScrect  
    "apiDomain":"https://api.weixin.qq.com/",
    "apiURL":{
        "accessTokenApi":"%scgi-bin/token?grant_type=client_credential&appid=%s&secret=%s"
    }
}

4. getAccessToken.js 파일 내용

var express = require('express');
var https = require('https'); //  https 
var util = require('util'); //  util 
var fs = require('fs'); //  fs 
var router = express.Router();
var accessTokenJson = require('../data/access_token');
var configJson = require('../data/config');

/* GET users listing. */
router.get('/', function(req, res, next) {

    new Promise(function(resolve,reject) {
        //  
        var currentTime = new Date().getTime();
        // 
        var url = util.format(configJson.apiURL.accessTokenApi,configJson.apiDomain,configJson.appID,configJson.appScrect);
        
        //    access_token  
        if (accessTokenJson.access_token === "" || accessTokenJson.expires_time < currentTime) {

            https.get(url, function(res){
                var buffer = [],result = "";
                //   data  
                res.on("data",function(data){
                    buffer.push(data);
                });
                res.on("end",function() {
                    // result = JSON.stringify(Buffer.concat(buffer,buffer.length).toString('utf-8'));
                    
                    var body = Buffer.concat(buffer);
                    result = JSON.parse(body);

                    if (body.indexOf("errcode") < 0) {
                        accessTokenJson.access_token = result.access_token;
                        accessTokenJson.expires_time = new Date().getTime() + (parseInt(result.expires_in) - 200) * 1000;
                        // 
                        fs.writeFile('/home/nodeApp/wxApp/data/access_token.json', JSON.stringify(accessTokenJson));
                        //  access_token  
                        resolve(accessTokenJson.access_token);

                    } else {
                        // 
                        resolve(result);
                    }
                })

            }).on('error',function(err){
                reject1(err);
            });
        } else {
            //  access_token  
            resolve(accessTokenJson.access_token);  
        }
    }).then(function(data) {
        res.send(data);
    });
    
});

module.exports = router;

아래와 같은 정보를 보면 완성된다
여러분의 보충을 환영합니다.

좋은 웹페이지 즐겨찾기