MVC 微信开发获取用户OpenID
来源:互联网 发布:js给标签删除属性 编辑:程序博客网 时间:2024/05/22 15:04
第一次开发微信版网页,对最重要的获取微信OpenId,特此记录下来
1.首先得有appid和appsecret
复制代码
1 1. public class WeiXin {
2
3 public static string appid {
4 get {
5 string _appid = “wx3xxxxxxxxxxxxxxx”;
6 return _appid;
7 }
8 }
9 public static string aseret {
10 get {
11 string appsecret = “b6719276d539796d94bxxxxxxxxxxxxxxx”;
12 return appsecret;
13 }
14 }
15
16 }
复制代码
2.只获取用户的openID,,在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面,以snsapi_base为scope发起的网页授权,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(下面代码中的url参数就是回调页,静态的可以写成:string url = https://wx.baidu.com/controller/GetOpenId,注意URL需要进行HttpUtility.UrlEncode(url)编码,还有回调页的域名需要和微信公众号里面设置的回调域名相同)
复制代码
1 public class ApplyVIPController : Controller
2 {
3
4 // GET: /ApplyVIP/
5
6 public ActionResult Index(string url)
7 {
8 string _url = string.Format(“https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_base&state={2}#wechat_redirect”,
9 WeiXin.appid,
10 url,//回调页URL
11 Guid.NewGuid().ToString(“N”));
12 return Redirect(_url);//这里微信会自动取出回调页URL,并且跳转到该url所属的页面
13 }
复制代码
3.获取code,并且通过code获取Openid,正确时返回的JSON数据包如下:{ “access_token”:”ACCESS_TOKEN”, “expires_in”:7200, “refresh_token”:”REFRESH_TOKEN”, “openid”:”OPENID”, “scope”:”SCOPE” },这里面就包含了所需要的OPENID
复制代码
//controller
public string GetOpenId() {
string code = requset.querystring[“code”];
string openid = “”;
string json = “”;
string url = string.Format(“https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code “//通过appid,appaseret,code
, WeiXin.appid, WeiXin.aseret, code);
HttpQuery.Get(url, null, msg => {
json = msg;
});
JObject job = (JObject)JsonConvert.DeserializeObject(json);
openid = job[“openid”].ToString();
return openid;
}
复制代码
4.请求获取Openid的httpquery.get()方法
复制代码
public class HttpQuery { private static readonly string DefaultUserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; public static void Get(string url, object data, Action<string> callback) { IDictionary<string, string> parameters = Getparameters(data); if (!(parameters == null || parameters.Count == 0)) { url += "?"; foreach (var item in parameters) { url += item.Key + "=" + item.Value + "&"; } } CreateGetHttpResponse(url, null, null, null, callback); } /// <summary> /// 创建GET方式的HTTP请求 /// </summary> /// <param name="url">请求的URL</param> /// <param name="timeout">请求的超时时间</param> /// <param name="userAgent">请求的客户端浏览器信息,可以为空</param> /// <param name="cookies">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param> /// <returns></returns> private static HttpWebResponse CreateGetHttpResponse(string url, int? timeout, string userAgent, CookieCollection cookies, Action<string> callback, string encoding = "utf-8") { if (string.IsNullOrEmpty(url)) { return null; //throw new ArgumentNullException("url"); } try { HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; request.Method = "GET"; request.UserAgent = DefaultUserAgent; if (!string.IsNullOrEmpty(userAgent)) { request.UserAgent = userAgent; } if (timeout.HasValue) { request.Timeout = timeout.Value; } if (cookies != null) { request.CookieContainer = new CookieContainer(); request.CookieContainer.Add(cookies); } HttpWebResponse httpWebResponse = request.GetResponse() as HttpWebResponse; StreamReader reader = new StreamReader(httpWebResponse.GetResponseStream(), System.Text.Encoding.GetEncoding(encoding)); string html = ""; //获取请求到的数据 html = reader.ReadToEnd(); //关闭 httpWebResponse.Close(); reader.Close(); callback(html); return httpWebResponse; } } catch { callback(null); } return null; }
}
- MVC 微信开发获取用户OpenID
- 微信平台开发获取微信用户的OPENID
- 获取微信用户OpenID
- 获取微信用户OpenID
- php之微信开发获取用户openid的方法
- 微信开发--怎么获取用户的信息(openid)
- MVC 微信网页授权 获取 OpenId
- 获取微信用户的openId
- php获取微信用户的openid
- 微信获取用户的openid
- 微信公众平台 获取用户openid
- 微信公众号获取用户openid
- 微信授权获取用户的openid
- 获取微信用户的openId
- 微信开发之获得用户openid
- h5怎么获取微信用户openId,h5如何获取微信用户openId
- 微信公众号开发-微信网页授权获取用户openid以及用户信息的步骤
- 微信公众号开发之获取微信用户的openID
- JS动态创建css的两种方法
- 《高性能MySQL》学习笔记四
- QAQ &火星情报局 哥德巴赫猜想 logn素数判定
- 网易编程题--跳石板
- 获取进程的内存(专用工作集)
- MVC 微信开发获取用户OpenID
- jquery修改a标签的href链接和文字
- 【OpenCV开发之一】关于OpenCV安装的问题
- 批量下载pylot源码实例脚本解决提示“这种类型的文件可能会损害您的计算机。”
- 虚拟机桥接网络设置
- PHP5.5-哈希加密和匹配
- HTML笔记-5
- PHP3 设计模式、COMPOSER、异常处理
- 为什么离不开 Stackoverflow?