wechat-api icon indicating copy to clipboard operation
wechat-api copied to clipboard

使用api_js时重复请求access_token和js_api_ticket

Open ghost opened this issue 9 years ago • 0 comments

const accessToken = (callback) => {
    Fiber(() => {
        const accessToken = AppState.find({stateName: wechatJsSdk.token}).fetch();
        console.log(`accessToken ${JSON.stringify(accessToken)}`);
        callback(null, accessToken);
    }).run();
};
const updateToken= (token, callback) => {
    Fiber(() => {
        console.log(`updateToken ${JSON.stringify(token)}`);
        AppState.upsert({stateName: wechatJsSdk.token}, { $set: token});
        callback(null);
    }).run();
};

const api = new WechatAPI(
    Meteor.settings.weChatMp.appId,
    Meteor.settings.weChatMp.appSecret,
    accessToken,
    updateToken
);

const getTicketToken = (type, callback) => {
    Fiber(() => {
        const ticket = AppState.find({stateName: wechatJsSdk.ticket}).fetch();
        console.log(`getTicketToken ${JSON.stringify(ticket)}`);
        callback(null, ticket);
        return ticket;
    }).run();
};
const saveTicketToken = (type, ticketToken) => {
    Fiber(() => {
        console.log(`saveTicketToken ${JSON.stringify(ticketToken)}`);
        AppState.upsert({stateName: wechatJsSdk.ticket}, { $set: ticketToken} );
    }).run();
};


const getTicket = (err, result) => {
    Fiber(() => {
        console.log(`getTicket ${JSON.stringify(result)}`);
        if (!err) {
            AppState.upsert({stateName: wechatJsSdk.ticket}, { $set: result } );
        }
    }).run();
};

//如果执行这两行,
//api.registerTicketHandle(getTicketToken, saveTicketToken);
//api.getTicket(wechatJsSdk.ticket, getTicket);
//那这行没有返回结果. 而且access token 和 ticket 都会刷新两次以上。
//api.getJsConfig(param, callback);

具体问题就是这样的。请问这个API是这样用吗?

ghost avatar Aug 07 '16 07:08 ghost