这是一个利用webform做出来的简单demo,微信授权,获取微信用户的基本信息.方便以后加深记忆.
public partial class Index : System.Web.UI.Page { //开发者appID public static string appID = "xxxxxx"; // public static string appsecret = "xxxxx"; public string a="",b=""; protected void Page_Load(object sender, EventArgs e) { string code = Request["code"]; if (!string.IsNullOrEmpty(code)) { //获取access_token string url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appID + "&secret=" + appsecret + "&code=" + code + "&grant_type=authorization_code"; JObject jObject = GetMsg(url, true); //从返回的数据中取出openid和access_token来从微信服务器上获取用户信息 string access_token = jObject["access_token"].ToString(); string openId = jObject["openid"].ToString(); string uri= "https://api.weixin.qq.com/sns/userinfo?access_token="+access_token+"&openid="+openId+"&lang=zh_CN"; JObject json = GetMsg(uri,false); b = json["nickname"].ToString(); } else { //对回调网址进行UrlEncode编码 string uri = HttpUtility.UrlEncode("http:/xxdkys.org/index.aspx"); //向微信发送token请求 string url1 = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appID + "&redirect_uri=" + uri + "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect"; Response.Redirect(url1); } } /// <summary> /// 获取url中返回的数据,转换为json对象 /// </summary> /// <param name="url">跳转Uri</param> /// <param name="method">postOrGet</param> /// <returns></returns> JObject GetMsg(string url,bool method) { //利用HttpWebRequest方法向Url发送请求 HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); if (method) { } else { webRequest.Method = "Get"; } //获取url返回的资源 WebResponse response = webRequest.GetResponse(); //利用StreamReader, 为指定的流/文件名初始化 StreamReader 类的新实例,并且使用默认的编码(UTF-8)读取文件 StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); //利用实例的对象的ReadToEnd()读取所有信息 JObject jObject = JObject.Parse(reader.ReadToEnd()); return jObject; } }
下面这种方法同样可以获取到
//开发者appID public static string appID = "xxxx"; //开发者appsecret public static string appsecret = "xxxxxx"; public string a="",b=""; protected void Page_Load(object sender, EventArgs e) { string code = Request["code"]; if (!string.IsNullOrEmpty(code)) { //获取access_token string url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appID + "&secret=" + appsecret + "&code=" + code + "&grant_type=authorization_code"; WebClient wc = new WebClient(); wc.Credentials = CredentialCache.DefaultCredentials; wc.Encoding = Encoding.UTF8; string ruturnText = wc.DownloadString(url); JObject jObject = JObject.Parse(ruturnText); string access_token = jObject["access_token"].ToString(); string openId = jObject["openid"].ToString(); string userInfo = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access_token + "&openid=" + openId + "&lang=zh_CN"; a = wc.DownloadString(userInfo); JObject json = JObject.Parse(a); b = json["nickname"].ToString(); } else { //对回调网址进行UrlEncode编码 string uri = HttpUtility.UrlEncode("http://blkys.org/index.aspx"); //向微信发送token请求 string url1 = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appID + "&redirect_uri=" + uri + "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect"; Response.Redirect(url1); } }