
app.route('/').post(function(req,res){
var _da;
req.on("data",function(data){
_da = data.toString("utf-8");
});
req.on("end",function(){
var msgType = formattedValue(getXMLNodeValue('MsgType',_da));
if( msgType === "text"){
// handle text message, detail source code see previous blog
}
else if( msgType === "voice"){
// handle voice message, detail source code see previous blog
}
else if( msgType === "event"){
var event = formattedValue(getXMLNodeValue('Event',_da));
if( event === "subscribe"){
// handle subscribe event, detail source code see previous blog
}
else if( event === "CLICK"){
/*
< <
> >
" :
& &
*/
var redirect = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx73b49bfe02fd3a17&redirect_uri=https://wechatjerry.herokuapp.com/tokenCallback&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";
var reply = "<a href="" +
encodeURI(redirect) + "">" + "OAuth2 test to read User info in 3rd application" + "<" + "/a" + ">";
var eventtext = replyMessage(_da, reply);
res.send(eventtext);
};
}
});
});
app.route("/tokenCallback").get(function(req,res){
if( req.query && req.query.code) {
authorizeAndRedirect(req.query.code, res);
}
else{
res.send("no code");
}
});
The function authorizeAndRedirect is implemented in nodejs module with below source code:
var config = require("../../config.js");
var request = require('request');
function getAccessToken(code) {
var url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" +
config.testAccountAppid + "&secret=" + config.testAccountSecret + "&code=" + code + "&grant_type=authorization_code";
var getTokenOptions = {
url: url,
method: "GET",
json:true,
headers: {
"content-type": "application/json"
}
};
return new Promise(function(resolve,reject){
var requestC = request.defaults({jar: true});
requestC(getTokenOptions,function(error,response,body){
if(error){
reject({message: error});
return;
}
resolve(body);
}); // end of requestC
});
}
function getUserinfo(tokenResponse, res){
var userinfourl = "https://api.weixin.qq.com/sns/userinfo?access_token="
+ tokenResponse.access_token + "&openid=" + tokenResponse.openid;
var userOptions = {
url: userinfourl,
method: "GET",
json:true,
headers: {
"content-type": "application/json"
}
};
return new Promise(function(resolve,reject){
var requestC = request.defaults({jar: true});
requestC(userOptions,function(error,response,body){
if(error){
reject({message: error});
return;
}
var url = "https://wechatjerry.herokuapp.com/ui5?nickname=" + body.nickname;
res.redirect(url);
}); // end of requestC
});
}
module.exports = function(code, res){
getAccessToken(code).then(function(tokenResponse) {
getUserinfo(tokenResponse, res);
});
};
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
12 | |
12 | |
11 | |
11 | |
11 | |
9 | |
8 | |
7 | |
7 | |
6 |