在借鉴前两篇获取微信用户基本信息的基础下,本人也总结整理了一些个人笔记:如何通过OAuth2.0获取微信用户信息
1、首先在某微信平台下配置OAuth2.0授权回调页面:
2、通过appid构造url获取微信回传code值(appid可在微信平台下找到)
1)、微信不弹出授权页面url:
A、code回传到页面wxProcess2.aspx,不带参数
Response.Redirect("https://open.weixin.qq.com/connect/oauth2/authorize?appid="
+
appid +
"&redirect_uri=http://localhost:8888/wxProcess2.aspx&response_type=code&scope=snsapi_base&state=1#wechat_redirect");
B、code回传到页面wxProcess2.aspx,带参数reurl,即wxProcess2.aspx获得code的同时,也能获取reurl的值,具体如下:
Response.Redirect("https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appid + "&redirect_uri=http://localhost:8888/wxProcess2.aspx?reurl=" + reurl + "&response_type=code&scope=snsapi_base&state=1#wechat_redirect");
2)、微信弹出授权页面url:需要用户授权,才能获取code及后面需要获取的用户信息
Response.Redirect("https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appid + "&redirect_uri=http://localhost:8888/wxProcess2.aspx?reurl=" + reurl + "&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect");
说明:微信是否弹出授权页面url的区别只在一个参数scope,不弹出微信授权页面:scope=snsapi_base,弹出微信授权页面:scope=snsapi_userinfo。
微信授权页面如下:
3、通过appid、secret、code构造url,获取微信用户的openid和access token。appid、secret可在微信平台下找到,code已在上面方法中获取并回传。具体访问url:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appid + "&secret=" + appsecret + "&code=" + Code + "&grant_type=authorization_code
4、通过openid、access token获取用户信息,具体访问url:
https://api.weixin.qq.com/sns/userinfo?access_token=" + REFRESH_TOKEN + "&openid=" + OPENID
说明:主要通过访问微信的3个url地址并回传数据,获取微信用户基本信息
====================================================================
具体代码:
1、获取微信code处理页面:wxProcess.aspx
protected void Page_Load(object sender, EventArgs e)
2、获取微信code值回传到自己的页面wxProcess2.aspx:
public string reurl = "";
用户昵称:" + OAuthUser_Model.nickname + "
性别:" + OAuthUser_Model.sex + "
所在省:" + OAuthUser_Model.province + "
所在市:" + OAuthUser_Model.city + "
所在国家:" + OAuthUser_Model.country + "
头像地址:" + OAuthUser_Model.headimgurl + "
用户特权信息:" + OAuthUser_Model.privilege);