微信网页开发 微信OpenID获取

时间:2024-03-02 21:30:45
用户要求在微信端登录一次后,以后不需要再登录.  我的系统是单独的一个网站. 使用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。 开发者文档也有详细记录