这里要通过OAuth2.0来实现
微信公众平台OAuth2.0授权详细步骤如下:
- 用户关注微信公众账号。
- 微信公众账号提供用户请求授权页面URL。
- 用户点击授权页面URL,将向服务器发起请求
- 服务器询问用户是否同意授权给微信公众账号(scope为snsapi_base时无此步骤)
- 用户同意(scope为snsapi_base时无此步骤)
- 服务器将CODE通过回调传给微信公众账号
- 微信公众账号获得CODE
- 微信公众账号通过CODE向服务器请求Access Token
- 服务器返回Access Token和OpenID给微信公众账号
- 微信公众账号通过Access Token向服务器请求用户信息(scope为snsapi_base时无此步骤)
- 服务器将用户信息回送给微信公众账号(scope为snsapi_base时无此步骤)
1.配置授权回调页面域名
进入微信公众平台后台后,依次进入开发者中心-权限表,找到网页授权获取用户基本信息,
点击右侧的修改。
授权回调域名配置规范为全域名并且不带http,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面
http://www.qq.com/music.html
http://www.qq.com/login.html
都可以进行OAuth2.0鉴权。但
http://pay.qq.com
http://music.qq.com
http://qq.com
无法进行OAuth2.0鉴权。
如果你的网址没有被列入过黑名单,就会在顶部出现
然后,域名配置就成功了。
2.用户授权并获取code
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx4618054f7c6ded8d&redirect_uri=url&response_type=code&scope=snsapi_base&state=index&connect_redirect=1#wechat_redirect
参数说明
appid
公众号的唯一标识
redirect_uri
授权后重定向的回调链接地址
response_type
返回类型,请填写code
scope
应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo
(弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)
state
重定向后会带上state参数,开发者可以填写任意参数值
wechat_redirect
直接在微信打开链接,可以不填此参数。做页面302重定向时候,必须带此参数
应用授权作用域:由于snsapi_base只能获取到openid,意义不大,所以我们使用snsapi_userinfo。
通过req.query.code就可以得到code
3.使用code换取access_token
var url = "https://api.weixin.qq.com/sns/oauth2/access_token?grant_type=authorization_code&appid=" + appId + "&secret=" + appSecret + "&code=" + code;
通过对url发起http get请求,就可以得到openid,openid是唯一的,可以和自己网站的用户id进行绑定
更详细的内容可以参考
http://www.cnblogs.com/txw1958/p/weixin71-oauth20.html