node.js连接微信企业号
来源:互联网 发布:nlpir java 编辑:程序博客网 时间:2024/06/04 17:56
1、首先,你需要拥有一个认证通过的企业号
2、在应用中心的自建应用中创建新应用
3、在创建的应用中填写可信域名,并启用回调模式。
4、在回调模式中需要填写你反馈信息的url,token与encodingAESKey都是随机生成的,当然也可以自己定义。
5、进入设置的权限管理,新建管理员组,把开发者拉进去,并分配应用权限和通讯录的相应权限。在这里我们可以得到 Corpid和secret。
6、首先在package.json中装几个包,装包命令:npm install xxxx –save 。–save代表装最新版本。
"wechat": "^2.0.3", "wechat-api": "^1.28.0", "wechat-crypto": "0.0.2", "wechat-oauth": "^1.1.1",
7、在routes下,新建一个weixin的js文件写回调模式的验证。
var wechat = require('./weixin.js');module.exports = function(app) { wechat(app);});
8、微信的token和encodingAESKey认证,这里需要三个参数, token, Corpid,encodingAESKey。还需要填写对应的url。之所以get的路由是/wechat,是因为微信里写的url为xxxxxxxx/wechat。
var wechat = require('wechat');var crypto = require('crypto');var WXBizMsgCrypt = require('wechat-crypto');var url = require('url');module.exports = function (app) { app.get('/wechat',function (req,res){ var reqObj = url.parse(req.url, true); var params = reqObj['query']; var msg_signature = params['msg_signature']; var timestamp = params['timestamp']; var nonce = params['nonce']; var verifyEchostr = params['echostr']; var cryptor = new WXBizMsgCrypt( token,encodingAESKey, Corpid); var result = cryptor.decrypt(verifyEchostr); console.log(result.message); res.send(result.message);});//微信公众号认证结束}
9、这一步完成之后上传到服务器,运行之后,在企业号点击测试,测试成功,成为开发者。
10、成为开发者之后,调用所有接口都需要accesstoken。这里顺便加上获取登陆企业号的用户的信息。企业如果需要员工在跳转到企业网页时带上员工的身份信息,需构造如下的链接:https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect员工点击后,页面将跳转至 redirect_uri?code=CODE&state=STATE,企业可根据code参数获得员工的userid。
var weChatConfig = { token: '', Corpid: '', corpsecret: '', encodingAESKey: '',};var wechat = require('./weixin.js');var express = require('express');var https = require('https');var http = require('http');var OAuth = require('wechat-oauth');var client = new OAuth(weChatConfig.Corpid, weChatConfig.corpsecret); app.get('/user/oauth', function (req, res){ //重定向的路由为redirectUrl 的值。 var redirectUrl = 'http://cardwechat.tyust.edu.cn'; var state = 'STATE'; var scope = 'snsapi_userinfo' var url = client.getAuthorizeURL(redirectUrl, state, scope); res.redirect(url); }); app.get('/', function (req, res) { // 重定向之后可以通过 req.query.code获取code。 var code = req.query.code; req.session.code = code; var state = req.query.state; req.session.state = state; //如果code有值,再去获取accesstoken,获取accesstoken通过https协议。 if(!req.session.code){ //没有code。 }else{ https.get('https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid='+weChatConfig.Corpid+'&corpsecret='+weChatConfig.corpsecret,function(_res){ _res.on('data', function(result) { var json = JSON.parse(result);//将josn文件转化为对象 var accesstoken = json.access_token; req.session.accesstoken = accesstoken; //获取到accesstoken。加上code获取用户信息 https.get('https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token='+ req.session.accesstoken+'&code='+req.session.code,function(_res){ _res.on('data', function(data) { var jsondata = JSON.parse(data); //获取到用户userid req.session.UserId = jsondata.UserId; req.session.DeviceId = jsondata.DeviceId; res.redirect('/name'); }); }).on('error', function(e) { return callback(err); }); }); }).on('error', function(e) { console.log('--------------err'+err); return callback(err); }); } }); app.get('/name',function (req,res){ //用accesstoken与userid获取用户的其他信息。 https.get('https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token='+req.session.accesstoken+'&userid='+req.session.UserId,function(_res){ _res.on('data', function(data) { var jsondata = JSON.parse(data); req.session.name = jsondata.name; if(!req.session.name){ //没获取到报错 }else{ res.redirect('/home/' + req.session.state); } }); }).on('error', function(e) { return callback(err); }); })
- node.js连接微信企业号
- 微信企业号三个连接模式
- 微信企业号开发1--连接
- Node.js微信公众号开发
- sails.js 使用node-cron模块,监听订单状态并发送消息到企业微信
- 微信企业号开发之如何建立连接(1)
- 微信企业号开发之如何建立连接
- 微信企业号开发(2)--建立连接(主动)
- 微信企业号开发(3)--建立连接(回调)
- 微信企业号开发-如何建立连接
- Node.js企业开发
- 微信企业号
- 微信企业号
- 微信JS接口 - 企业号开发者接口文档n
- NET/C# 微信企业号 JS-SDK:上传图片
- node js 微信公众号,模板消息开发测试
- 7天搞定Node.js微信公众号开发
- 微信公众号接入服务端node.js中
- linux iptables配置
- Oracle 创建 Schema
- 微信公众号开发者接入
- 整理Zygote资料
- HDU 5884 Sort 2016青岛网赛
- node.js连接微信企业号
- 最短路习题
- 面试题之输入n求和为m的所有组合
- 七种CSS方式让一个容器水平垂直居中
- 详解JS函数重载
- 伪静态
- 第三周项目2-建设“顺序表”算法库
- SSO认证服务器实现原理(一)
- 基于 JetBrains DataGrip 之 Oracle PL/SQL 攻略 (二)