linux下配置node.js环境并实现微信授权
2017-01-12 22:22
1006 查看
好久好久没写自己学到的东西了,由于最近自己弄的东西太散了,有时候看看书有时候写写自己模仿acfun app的个人项目,实在不知道该写啥,今天因为拿到了一个外包单的服务器,所以想实现以下微信授权以及微信支付,生成带参数的二维码三个简单的微信接口并记录下来,方便以后使用~
首先这篇先写配置环境及微信授权吧。
linux下的环境配置
1、安装
wget [‘url’];
我是直接官方安装编译好的二进制包,所以直接在root目录下
wget https://nodejs.org/dist/v6.9.4/node-v6.9.4-linux-x64.tar.xz 下载解压包
哦对了,我是64位的,各位自己看一下linux的版本信息再装
cat /proc/version
2、解压
xz -d **.tar.xz
tar -xv -f **.tar
//或者
tar -Jxv -f **.tar.xz(大写的J)
第一种是先解压xz再解压tar,第二种则是一次解压,大家随意。
3、环境变量的配置
我不知道为啥我的这个服务器vim识别不了= =。。。我就用vi了,都一样可以改文本就好
首先进入vi模式修改环境变量
vi /etc/profile
按insert进入插入模式 将你的node的安装路径添加在PATH的前面
我因为是在root下所以是这样写
$PATH:[你的安装路径]
写完后Esc退出插入模式
:wq保存并退出vi模式即可
然后输出
source /etc/profile
将变量临时生效,最好还是重连服务器的好~
echo $PATH 查看是否有自己添加的环境变量
最后切换至任意目录下执行
node -v
nom -v
好的配置完成~
接下来开始微信授权吧
1、关注并申请微信测试号
首先我们先申请登录微信测试号,并且在里面扫描二维码关注自己的测试号,然后再网页授权那改好自己的回调域名,我这里就改了3000端口的,大家随意
2、开始写授权的后端代码
写完之后,将代码上传到服务器后,启动node服务器
node wx_login.js;
手机访问http://www.XXXXXX.cn:3000/oauth/wx_login即可看到授权申请,点击确认回调到res.send回的测试页面~服务器与前端返回页面的信息如下
首先这篇先写配置环境及微信授权吧。
linux下的环境配置
1、安装
wget [‘url’];
我是直接官方安装编译好的二进制包,所以直接在root目录下
wget https://nodejs.org/dist/v6.9.4/node-v6.9.4-linux-x64.tar.xz 下载解压包
哦对了,我是64位的,各位自己看一下linux的版本信息再装
cat /proc/version
2、解压
xz -d **.tar.xz
tar -xv -f **.tar
//或者
tar -Jxv -f **.tar.xz(大写的J)
第一种是先解压xz再解压tar,第二种则是一次解压,大家随意。
3、环境变量的配置
我不知道为啥我的这个服务器vim识别不了= =。。。我就用vi了,都一样可以改文本就好
首先进入vi模式修改环境变量
vi /etc/profile
按insert进入插入模式 将你的node的安装路径添加在PATH的前面
我因为是在root下所以是这样写
$PATH:[你的安装路径]
写完后Esc退出插入模式
:wq保存并退出vi模式即可
然后输出
source /etc/profile
将变量临时生效,最好还是重连服务器的好~
echo $PATH 查看是否有自己添加的环境变量
最后切换至任意目录下执行
node -v
nom -v
好的配置完成~
接下来开始微信授权吧
1、关注并申请微信测试号
首先我们先申请登录微信测试号,并且在里面扫描二维码关注自己的测试号,然后再网页授权那改好自己的回调域名,我这里就改了3000端口的,大家随意
2、开始写授权的后端代码
//wx_login.js var express = require('express'); var app = express(); var router = express.Router(); var request = require('request'); /*微信登录*/ var AppID = 'xxxxxxxxxx';//测试号APPID var AppSecret = 'xxxxxxxxxx';//测试号APPSECRET //监控路由地址/wx_login router.get('/wx_login',function(req,res,next){ //第一步:用户同意授权,获取code var router = 'get_wx_access_token'; //编码后的回调地址,这里一定要记得加端口号,因为我们在测试号里设置过的 var return_uri = 'http%3A%2F%2Fwww.xxxxxx.cn%3A3000%2Foauth%2F'+router; console.log(decodeURIComponent(return_uri)); var scope = 'snsapi_userinfo'; //重定向授权地址,回调页面是return_uri,中间有oauth是因为我下面写了虚拟目录的代理 res.redirect('https://open.weixin.qq.com/connect/oauth2/authorize?' + 'appid=' + AppID + '&redirect_uri=' + return_uri + '&response_type=code' + '&scope=' + scope + '&state=STATE#wechat_redirect'); }); //get授权页面回调后的code router.get('/get_wx_access_token',function(req,res,next){ //第二步:通过code换取网页授权access_token var code = req.query.code; console.log(code); //请求获取token和用户的openId request.get( { url:'https://api.weixin.qq.com/sns/oauth2/access_token?appid='+AppID+'&secret='+AppSecret+'&code='+code+'&grant_type=authorization_code' }, function(error,response,body){ if(response.statusCode == 200){ console.log(body); var data = JSON.parse(body); var access_token = data.access_token; var openid = data.openid; //第三步:利用token和openId请求用户信息 request.get( { url:'https://api.weixin.qq.com/sns/userinfo?access_token='+access_token+'&openid='+openid+'&lang=zh_CN' }, function(error,response,body){ if(response.statusCode === 200){ //第四步:根据获取的用户信息进行操作 var userinfo = JSON.parse(body); console.log('获取信息成功'); console.log(userinfo); //测试 res.send( "<h1>" + userinfo.nickname + " 的个人信息</h1>" + "<p><img src=" + userinfo.headimgurl + "/></p>" + "<p>" + userinfo.city + "," + userinfo.province + "," + userinfo.country + "</p>" ); } else{ console.log(response.statusCode); } } ); } else{ console.log(response.statusCode); } } ); }); //静态资源下的虚拟目录,即所有的地址都通过http://[host]:3000/oauth来访问 app.use('/oauth',router); //监听对应主机名及端口 var server = app.listen(3000,'www.xxxx.cn',function(){ var host = server.address().address; var port = server.address().port; console.log('Example app listening at http://%s:%s', host, port); })
写完之后,将代码上传到服务器后,启动node服务器
node wx_login.js;
手机访问http://www.XXXXXX.cn:3000/oauth/wx_login即可看到授权申请,点击确认回调到res.send回的测试页面~服务器与前端返回页面的信息如下