从接触公众号到现在,通过不断积累学习,对如何调用微信提供接口有了一定的见解。当然在开发过程中遇到很多问题,现在把部分模块功能在这备案一下,做个总结也希望能给其他人帮助
工欲善其事,必先利其器,先看看开发公众号需要准备或了解什么
- web开发工具:官方提供的开发工具,使用自己的微信号来调试微信网页授权、调试、检验页面的 JS-SDK 相关功能与权限,模拟大部分 SDK 的输入和输出。下载地址:web开发工具下载
- 开发文档:https://mp.weixin.qq.com/wiki
- 登录微信测试公众号,获取公众号的appID、appsecret,登录地址:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login (一般测试开发阶段,都不拿正式公众号测试,因为存在风险并且你调试时不用担心影响到正式公众号的正常使用,而且有些接口在正式公众号上比较严格,而在测试公众号上可以放开,如模板信息)
下面进入正题,实现微信网页授权,获取微信信息,主要用于以微信帐号作为用户登录,如果你只是需要绑定微信,就可以不用授权,直接请求获取微信OpenId(对当前公众号唯一),进行用户绑定(在下面代码时是写明如何实现),该功能可在开发文档:微信网页开发-》微信网页授权里查看详细信息,下面正式开始。
用户要求在微信端登录一次后,以后不需要再登录. 我的系统是单独的一个网站. 使用MVC的记住密码功能, 如果用户重启,就还是要输入密码,所以需要有一个唯一不变的用来标示用户的ID。 OpenID就是这样,微信用户对于每个公众号它都是唯一的,不管关注还是不关注。
如何做到呢?
使用微信的网页授权(OAuth2.0),简单点理解这个东西就是跑到微信去请求个回调,微信跳转到你给的回调页面,然后在页面后面加个code, 你拿着code 去微信取你要的信息。
(1), 去公众号后台设置回调的域名
在开发-- 接口权限 -- 网页账号-- 用户授权获取用户基础信息 点击 “修改”,输入域名。 如www.baidu.com
(2) 绑定开发者微信号: 在开发--开发者工具 -- web开发者工具--进入 绑定开发者微信
(3) 这个时候你就可以试着看到code. 比如
在微信web开发者工具中输入
https://open.weixin.qq.com/connect/oauth2/authorize?appid=*******&redirect_uri=www.baidu.com&response_type=code&scope=snsapi_base&state=1#wechat_redirect
页面就会跳转到 www.baidu.com?code=***. 就可以看到code了。
(4) 通过code 来获取openID
https://api.weixin.qq.com/sns/oauth2/access_token?appid=***&secret=***&code=***&grant_type=authorization_code
会返回json 数据包,里面有要得OpenID 。 具体可以参见:http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html
这里注意的是一个code只能使用一次,我开始不知道,反复去取,导致程序时而好时而不好。 Code 5分钟不用就过期。
我这里只是去了OpenID。如果要取用户的其它信息,就需要在取code的时候改scope=snsapi_userinfo。 开发者文档也有详细记录