Python语言技术文档

微信小程序技术文档

php语言技术文档

jsp语言技术文档

asp语言技术文档

C#/.NET语言技术文档

html5/css技术文档

javascript

点击排行

您现在的位置:首页 > 技术文档 > C#/.NET微信开发

.NET微信公众号获取OpenID和用户信息

来源:中文源码网    浏览:730 次    日期:2024-04-24 09:31:54
【下载文档:  .NET微信公众号获取OpenID和用户信息.txt 】


.NET微信公众号获取OpenID和用户信息
本文实例为大家分享了微信公众平台实现获取用户OpenID的方法,供大家参考,具体内容如下
Index.aspx.cs代码:
public partial class Index : System.Web.UI.Page
{
//用户id
public string openid = "";
//公众号信息部分
public string appid = ConfigurationManager.AppSettings["AppId"];
public string appsecret = ConfigurationManager.AppSettings["AppSecret"];
public string redirect_uri =HttpUtility.UrlEncode("//www.zwyuanma.com");
public string scope = "【删除这个并填入请求类型,例如:snsapi_userinfo】";
#region 显示页面
public string accesstoken;
public string nickname;
public string sex;
public string headimgurl;
public string province;
public string country;
public string language;
public string city;
public string privilege = "";
#endregion
protected void Page_Load(object sender, EventArgs e)
{
/*
*微信认证获取openid部分:
*临时认证code
*/
//微信认证部分:第二步 获得code
string code = Request["code"];
if (string.IsNullOrEmpty(code))
{
//如果code没获取成功,重新拉取一遍
OpenAccess();
}
//微信认证部分:第三步 获得openid
string url = string.Format("http://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", appid, appsecret, code);
string result = HttpClientHelper.GetResponse(url);
LogHelper.WriteFile(result);
JObject outputObj = JObject.Parse(result);
//微信认证部分:第四步 获得更多信息
accesstoken = outputObj["access_token"].ToString();
openid = outputObj["openid"].ToString();
url = string.Format("http://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN",accesstoken,openid);
string result1 = HttpClientHelper.GetResponse(url);
LogHelper.WriteFile(result1);
JObject outputObj1 = JObject.Parse(result1);//将json转为数组
//以下是第四步获得的信息:
nickname = outputObj1["nickname"].ToString(); //昵称
sex = outputObj1["sex"].ToString(); //性别什么的
headimgurl = outputObj1["headimgurl"].ToString(); //头像url
province = outputObj1["province"].ToString(); ;
country = outputObj1["country"].ToString(); ;
language = outputObj1["language"].ToString(); ;
city = outputObj1["city"].ToString(); ;
//将获得的用户信息填入到session中
Session["openid"] = outputObj1["openid"];
//转向回入口
//OpenAccess();
}
/*
* 接入入口
* 开放到微信菜单中调用
* @param $dir_url 来源url
* @since 1.0
* @return void
*/
public void OpenAccess()
{
//判断session不存在
if (Session["openid"] == null)
{
//认证第一步:重定向跳转至认证网址
string url = string.Format("http://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&&response_type=code&scope=snsapi_userinfo&m=oauth2#wechat_redirect", appid, redirect_uri);
Response.Redirect(url);
}
//判断session存在
else
{
//跳转到前端页面.aspx
Response.Redirect(Request.Url.ToString());
}
}
}
Index.aspx内容:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="TEST.Index" %>





























openid:<%=openid%>




nickname:<%=nickname%>




sex:<%=sex%>




language:<%=language%>




city:<%=city%>




country:<%=country%>




headimgurl:




privilege:<%=privilege%>








HttpClientHelper.cs代码:
public class HttpClientHelper
{
///
/// get请求
///

///
///
public static string GetResponse(string url)
{
if (url.StartsWith("https"))
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
}
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = httpClient.GetAsync(url).Result;
if (response.IsSuccessStatusCode)
{
string result = response.Content.ReadAsStringAsync().Result;
return result;
}
return null;
}
public static T GetResponse(string url)
where T : class, new()
{
if (url.StartsWith("https"))
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = httpClient.GetAsync(url).Result;
T result = default(T);
if (response.IsSuccessStatusCode)
{
Task t = response.Content.ReadAsStringAsync();
string s = t.Result;
result = JsonConvert.DeserializeObject(s);
}
return result;
}
///
/// post请求
///

///
/// post数据
///
public static string PostResponse(string url, string postData)
{
if (url.StartsWith("https"))
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
HttpContent httpContent = new StringContent(postData);
httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var httpClient = new HttpClient();
HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;
if (response.IsSuccessStatusCode)
{
string result = response.Content.ReadAsStringAsync().Result;
return result;
}
return null;
}
///
/// 发起post请求
///

///
/// url
/// post数据
///
public static T PostResponse(string url, string postData)
where T : class, new()
{
if (url.StartsWith("https"))
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
HttpContent httpContent = new StringContent(postData);
httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var httpClient = new HttpClient();
T result = default(T);
HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;
if (response.IsSuccessStatusCode)
{
Task t = response.Content.ReadAsStringAsync();
string s = t.Result;
result = JsonConvert.DeserializeObject(s);
}
return result;
}
///
/// V3接口全部为Xml形式,故有此方法
///

///
///
///
///
public static T PostXmlResponse(string url, string xmlString)
where T : class, new()
{
if (url.StartsWith("https"))
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
HttpContent httpContent = new StringContent(xmlString);
httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var httpClient = new HttpClient();
T result = default(T);
HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;
if (response.IsSuccessStatusCode)
{
Task t = response.Content.ReadAsStringAsync();
string s = t.Result;
result = XmlDeserialize(s);
}
return result;
}
///
/// 反序列化Xml
///

///
///
///
public static T XmlDeserialize(string xmlString)
where T : class, new()
{
try
{
var ser = new XmlSerializer(typeof (T));
using (var reader = new StringReader(xmlString))
{
return (T) ser.Deserialize(reader);
}
}
catch (Exception ex)
{
throw new Exception("XmlDeserialize发生异常:xmlString:" + xmlString + "异常信息:" + ex.Message);
}
}
}
结果如图:
本文已被整理到了《ASP.NET微信开发教程汇总》,欢迎大家学习阅读。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持中文源码网。

相关内容