php微信公众平台获取用户信息实例,.NET微信公众号获取OpenID和用户信息实例解析...

这篇文章主要为大家详细介绍了.NET微信公众号获取OpenID和用户信息的方法,用户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("http://www.jb51.net");

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("https://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("https://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("https://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内容:

td

{

word-wrap: break-word;

}

openid:

nickname:

sex:

language:

city:

country:

headimgurl:

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);

}

}

}

结果如图:

04bb3eae2cf72d71cdb79bf9cc92dbab.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
wx.login是微信小程序提供的一个API,用于获取用户登录凭证(code)。通过调用wx.login接口,可以获取到用户的code,然后将code发送给开发者服务器,开发者服务器可以通过code换取用户的唯一标识openid和会话密钥session_key。 以下是wx.login的使用实例: 1. 在小程序的某个页面中,可以通过以下代码调用wx.login接口: ``` wx.login({ success: function(res) { if (res.code) { // 登录成功,获取到用户的code var code = res.code; // 将code发送给开发者服务器进行后续处理 // ... } else { console.log('登录失败!' + res.errMsg) } } }) ``` 2. 在开发者服务器中,可以通过接收到的code向微信服务器发送请求,换取用户的openid和session_key。以下是一个简单的Node.js示例: ```javascript const request = require('request'); // 将code发送给微信服务器进行换取openid和session_key function getOpenidAndSessionKey(code) { const url = `https://api.weixin.qq.com/sns/jscode2session?appid=YOUR_APPID&secret=YOUR_SECRET&js_code=${code}&grant_type=authorization_code`; request(url, function(error, response, body) { if (!error && response.statusCode == 200) { var data = JSON.parse(body); var openid = data.openid; var session_key = data.session_key; // 处理获取到的openid和session_key // ... } else { console.log('请求失败!' + error); } }); } // 在接收到小程序发送的code后调用getOpenidAndSessionKey函数 // ... ``` 以上就是wx.login的一个简单使用实例。通过调用wx.login接口获取用户的code,然后将code发送给开发者服务器进行后续处理,可以实现用户登录功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值