这是微信开发的第二篇博客,原本想第一篇从这篇开始的 这里衔接第一篇微信公众号H5支付,可是不少开发者作微信开发仅仅是使用支付功能而已,这里切入主题想必不少开发者从事微信公众号开发,都有需求制定本身的第三方网站,为了加强用户体验感,下降用户的流失率,会在用户经过公众号点击第三方网站的时候,就进行受权登陆,开发者就能获取到用户的一些我的信息,例如头像,openid,地址等,从而完善用户的我的信息。html
网站微信受权登陆的准备工做:官方接口文档 ,微信服务号(怎么注册我就不提了),准备工做作好了事后,梳理流程,切勿愣头青,先把流程梳理好,才好带入业务json
官方文案: 网站应用微信登陆是基于OAuth2.0协议标准构建的微信OAuth2.0受权登陆系统。在进行微信OAuth2.在进行微信OAuth2.0受权登陆接入以前,在微信开放平台注册开发者账号,并拥有一个已审核经过的网站应用,并得到相应的AppID和AppSecret,申请微信登陆且经过审核后,可开始接入流程。api
这里是官方的受权流程图,根据流程图显示,首先是发起受权登陆的请求,而后重定向微信,微信又会从新跳转到用户设置好的url上面,而且写到了code参数,经过code参数加上AppIdheAppSecret,换取到token,最后根据token拿到用户的信息,操做就结束了。服务器
第一步,进行微信受权获取code, 请求路径:https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 参数需求:微信
下面贴上我本身的代码:微信开发
String Hdurl = "这里填写你的微信重定向路径必须为域名"; String URL = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + WeiXinConfig.appid + "&redirect_uri=" + URLEncoder.encode(Hdurl) + "&response_type=code&scope=" + WeiXinConfig.scope + "&state=STATE#wechat_redirect"; return "redirect:" + URL;
若是时候请求成功的话,微信会弹出一个受权框,点击赞成,就会跳转到本身设置的重定向路径。记住code是携带在get请求里面的,拿到code后,经过code去get请求,获取token,这里注意一点要获取服务器的token必须在要公共平台里面的基本设置,设置IP白名单app
贴上个人代码:网站
//获取token logger.info("获取code ——————" + code); String tokenUrl = " https://api.weixin.qq.com/sns/oauth2/access_token"; String TokenJson = HttpRequest.sendGet(tokenUrl, "appid=" + WeiXinConfig.appid + "&secret=" + WeiXinConfig.AppSecret + "&code=" + code + "&grant_type=authorization_code"); logger.info("获取token ——————" + TokenJson.toString());
这里若是没有问题的话,响应回来的json数据,里面就会有access_token这个参数里面携带了token,注意一点,token有效时间为两个小时,toekn一天是用使用上限的默认为2000,微信里面的不少操做都须要使用toekn,因此能够根据token设置一套过时机制,事后期才去申请新,顺带还有用户的openid。url
下面进行微信受权的最后一步,经过token和openid获取用户的基本信息spa
贴上代码:
String userUrl = "https://api.weixin.qq.com/sns/userinfo"; String userInfo = HttpRequest.sendGet(userUrl, "access_token=" + token.getAccess_token() + "&openid=" + token.getOpenid() + "&lang=zh_CN"); logger.info("获取userInfo ——————" + userInfo.toString());
不出问题的话,就会经过响应的json信息就能拿到用户的基本信息了,微信受权登陆的全部操做就完成了,而后开发者能够根据本身的业务进行下一步流程。
其实微信网页受权登陆,算是微信开发里面,比较简单的功能了,参数细心注意一点的话基本能够一次过了,最后若是这篇文章有什么很差的地方,但愿你们指出来,若是能帮助到那些没有思路没有接触过微信开发的小伙伴解决问题,这就是我写博客最大的动力。
文章纯手写,转载请带上做者。