请求:'GET /my/userinfo': getUserInfo
getUserInfo:
var getUserInfo = async (ctx, next) => {
if(!ctx.query.code){
ctx.redirect('/my/order');
}else{
let code = ctx.query.code;
var data = tools.getToken(code);
data.then(function(data) {
data = JSON.parse(data);
tools.getUserInfo(data.access_token, data.openid).then(function(data) {
data = JSON.parse(data);
ctx.render('user', {
data: data
});
});
});
}};
tools.getToken:
exports.getToken = async function (code) {
let options = {
method: 'get',
url: 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='+ config.weixin.appid +'&secret='+ config.weixin.appSecret +'&code='+ code +'&grant_type=authorization_code',
headers: [
{
name: 'content-type',
value: 'application/x-www-form-urlencoded'
}
],
}
return new Promise(function (resolve, reject){
request(options, function(err, res, body) {
if(body){
return resolve(body);
}else{
return reject(err);
}
});
}); }
tools.getUserInfo:
exports.getUserInfo = function (AccessToken, openid) {
let options ={
method: 'get',
url: 'https://api.weixin.qq.com/sns/userinfo?access_token='+ AccessToken+'&openid='+ openid+'&lang=zh_CN',
headers: [
{
name: 'content-type',
value: 'application/x-www-form-urlencoded'
}
],
};
return new Promise((resolve, reject)=>{
request(options, function(err, res, body) {
if(res){
return resolve(body);
}else{
return reject(err);
}
});
}); }
现在ctx.render没效果。求大神指教一下。看了好多资料还是不会。= =、
这个是基于你的写法修改的
比较好一点的写法
getToken
和getUserInfo
应该在内部对返回结果进行prase,而且你没有进行异常处理