const WechatComponent = require('wechat-component');
const component = new WechatComponent({
appid: '<WECHAT_COMPONENT_APPID>',
appsecret: '<WECHAT_COMPONENT_APPSECRET>',
getComponentTicketAsync: async () => ...
getTokenAsync: async () => ...
saveTokenAsync: async token => ...
});
const authorizeURL = await component.getAuthorizeURL(redirectURI);
=> redirect to authorizeURL
const result = await component.queryAuth(code);
=> result.authorization_info.authorizer_access_token
const authorizerAppid = result.authorization_info.authorizer_appid;
=> await component.getAuthorizerInfo(authorizerAppid);
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);
await api.saveTokenAsync(token);
callback(null, token);
} catch (e) {
callback(e);
}
};
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);