一、前言
网站微信授权登录的准备工作:官方接口文档 ,微信服务号(怎么注册我就不提了),准备工作做好了过后,梳理流程,切勿愣头青,先把流程梳理好,才好带入业务
注意:如果没有认证的服务号,可以用测试账号,测试账号默认支持100个关注的微信号。
官方文案: 网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。在进行微信OAuth2.在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程。
二、思路
这里是官方的授权流程图,根据流程图显示,首先是发起授权登录的请求,然后重定向微信,微信又会重新跳转到用户设置好的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=snsapi_base&state=STATE#wechat_redirect"; return "redirect:" + URL;
如果时候请求成功的话,微信会弹出一个授权框,点击同意,就会跳转到自己设置的重定向路径。记住code是携带在get请求里面的,拿到code后,通过code去get请求,获取token,这里注意一点要获取服务器的token必须在要公共平台里面的基本设置,设置IP白名单
贴上我的代码:
//获取access_tokenstring oauthTokenUrl = string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", WXHelper.appId, WXHelper.secret, code); OAuthToken oauthToken = JsonConvert.DeserializeObject<OAuthToken>(new WXHelper().Request(oauthTokenUrl, "", "GET"));
这里如果没有问题的话,响应回来的json数据,里面就会有access_token这个参数里面携带了token,注意一点,token有效时间为两个小时,toekn一天是用使用上限的默认为2000,微信里面的很多操作都需要使用toekn,所以可以根据token设置一套过期机制,过后期才去申请新,顺带还有用户的openid。
下面进行微信授权的最后一步,通过token和openid获取用户的基本信息
贴上代码:
string userUrl = string.Format("https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}&lang=zh_CN", accesstoken, oauthToken.openid); OAuthUserInfo userInfo = JsonConvert.DeserializeObject<OAuthUserInfo>(new WXHelper().Request(userUrl,"", "GET"));
不出问题的话,就会通过响应的json信息就能拿到用户的基本信息了,微信授权登录的所有操作就完成了,然后开发者可以根据自己的业务进行下一步流程。
四、总结
其实微信网页授权登录,算是微信开发里面,比较简单的功能了,参数细心注意一点的话基本可以一次过了,最后如果这篇文章有什么不好的地方,希望大家指出来,如果能帮助到那些没有思路没有接触过微信开发的小伙伴解决问题,这就是我写博客最大的动力。
要完整代码,请关注公众号[程序员老兵],回复“授权登录-C#”