wechat-component

2.0.1 • Public • Published

wechat-component

Usage

Basic

const WechatComponent = require('wechat-component');
 
const component = new WechatComponent({
  appid: '<WECHAT_COMPONENT_APPID>',
  appsecret: '<WECHAT_COMPONENT_APPSECRET>',
  getComponentTicketAsync: async () => ... // get component ticket from cache/database;
  getTokenAsync: async () => ... // get access token from cache/database;
  saveTokenAsync: async token => ... // save access token to cache/database;
});
 
// Step 1
const authorizeURL = await component.getAuthorizeURL(redirectURI);
=> redirect to authorizeURL
 
// Step 2
const result = await component.queryAuth(code);
=> result.authorization_info.authorizer_access_token
 
// Step 3
const authorizerAppid = result.authorization_info.authorizer_appid;
=> await component.getAuthorizerInfo(authorizerAppid);

Wrap wechat-api

const util = require('util');
const API = require('wechat-api');
const api = new API(authorizerAppid, null, getToken, saveToken);
 
api.getAccessToken = async (callback) => {
  try {
    api.getTokenAsync = util.promisify(api.getToken);
    api.saveTokenAsync = util.promisify(api.saveToken);
 
    const refresh = await api.getTokenAsync();
    const token = await service.getAuthorizerToken(authorizerAppid, refresh.refreshToken);
    // service should use a Central Control Server
 
    await api.saveTokenAsync(token);
 
    callback(null, token);
  } catch (e) {
    callback(e);
  }
};

Wrap wechat-oauth

const OAuth = require('wechat-oauth');
const oauth = new OAuth(authorizerAppid, null, getToken, saveToken);
 
oauth.getAccessToken = async (code, callback) => {
  const token = await component.getOAuthAccessToken(authorizerAppid, code);
 
  oauth.saveToken(token.openid, token, err => callback(err, { data: token }));
};
 
oauth.refreshAccessToken = async (refreshToken, callback) => {
  const token = await component.refreshOAuthAccessToken(authorizerAppid, refreshToken);
 
  oauth.saveToken(token.openid, token, err => callback(err, { data: token }));
};
 
oauth.getAuthorizeURL = (redirect, state, scope) => component
  .getOAuthAuthorizeURL(authorizerAppid, redirect, scope, state);

Package Sidebar

Install

npm i wechat-component

Weekly Downloads

8

Version

2.0.1

License

MIT

Unpacked Size

14.2 kB

Total Files

6

Last publish

Collaborators

  • loulin