初衷
微信开发好像是现在各大项目必须接入的东西了,微信作为人们日常使用的软件成为现在最大的流量入口,微信的接入成为各大开发者非常头大的问题,那么这么久才想到要记录一些东西出来,也希望自己走过的坑分享给大家,可以帮助初接触微信接入的同学更快的进行开发。
或许这些没有太大的作用,不过也作为激励自己的一种方式吧,文笔不好,请大家见谅。
微信板块简介
做微信开发首先要分清公众平台,微信开发者平台,企业微信。
公众平台
公众平台是大家最熟悉的,很多人都有自己的公众平台,利用公众平台我们可以接收到粉丝发来的消息,开微店,给粉丝发推送等等操作,那么开发者可以通过监听微信操作来完成我们自己想做的事。微信开放平台
开放平台是微信专门为开放者定制,开发者可以根据自己的需求来完成不同的操作,如下图。
移动应用:比如开发app的自动登录
网站应用:webApp,web微信的授权登录(例如石墨文档)
公众账号:绑定我们的公众平台
公众号第三方平台:可以成为微信的第三方,获取微信权限授权,帮助其他公众号设置(例如微盟)
- 企业微信
企业微信号和微信开放平台非常像开发者可以定制自己的企业号,也可以成为第三方的提供商,得到其他的企业授权后可以操作其他的企业号。(使用代表:魔学院)
成为开发者
这是本文的重点内容,接入微信,我们首先要成为微信的开发者吧,者里先将如何通过验证成为开发者,代码有参考别人的,这里还是重要讲步骤。
- 微信设置
这个url很重要,微信会通过请求你的服务器来进行验证。微信会通过get请求来进行。要记住是—–get
那么先写一个get的路由了。 - 微信验证
get路由执行以下的方法getCheckSignature
微信加密的方式是sha1
function getCheckSignature(req, res) {
var signature = req.query.signature;
var timestamp = req.query.timestamp;
var nonce = req.query.nonce;
var echostr = req.query.echostr;
var token = "这里是你在上一个步骤中设置的Token";
var sha1 = crypto.createHash('sha1');
var sha1Str = sha1.update([token, timestamp, nonce].sort().join('')).digest('hex');
console.log(sha1Str)
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end((sha1Str === signature) ? echostr : '');
return res;
}
// 随机字符串产生函数
function _createNonceStr() {
return Math.random().toString(36).substr(2, 15);
};
// 时间戳产生函数
function _createTimeStamp() {
return parseInt(new Date().getTime() / 1000) + '';
};
function _calcSignature(ticket, noncestr, ts, url) {
var str = 'jsapi_ticket=' + ticket + '&noncestr=' + noncestr + '×tamp=' + ts + '&url=' + url;
var sha1 = crypto.createHash('sha1');
var sha1Str = sha1.update(str).digest('hex');
return sha1Str;
}
点击确认,如果微信得到验证通过,那么我们设置成功
3. 成为开发者后我们做什么
如果验证成功后,微信将通过该url方式对用户的操作进行转发,比如接受用户消息,接受用户的关注和取消关注事件,开发者可以利用这个url做一些操作。
结语:
这是成为微信开发的第一步,网上大家提供了很多资源,包括代码,我希望将这些系统的整合起来。
有兴趣的同学可以使用更简洁的方式。这里感谢cnode,大神们提供了node-wechat,node-wechat-api等更加便捷的工具。
ITDogFire–sky