MVC微信网页授权获取用户OpenId

2025-05-29 0 103

最近开发微信公众平台,做下记录,以前也开发过,这次开发又给忘了,搞了半天,还是做个笔记为好。

注意框架为MVC 开发微信公众平台。场景为,在模板页中获取用户openid,想要进行验证的页面,集成模板页就可以了。

在_Layout.cshtml中加入如下代码

?

1

2

3

4

5

6

7

8

9

10

11

12

13
<head>

<meta charset="utf-8" />

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>@ViewBag.Title - My ASP.NET Application</title>

@Styles.Render("~/Content/css")

@Scripts.Render("~/bundles/modernizr")

@{

var code = HttpContext.Current.Request["code"];

Log.logmsg(code);

string urlpath = HttpContext.Current.Request.Url.AbsoluteUri.ToString();

ViewBag.at = AdminUtil.GetOpenID(urlpath, code);

}

</head>

类AdminUtil中加入GetOpenID方法

?

1

2

3

4

5

6

7

8

9

10

11

12

13
#region 获取OpenID

/// <summary>

/// 获取OpenID

/// </summary>

public static string GetOpenID(string redirect_url, string code)

{

string AppID = WXModel.AppID;

string AppSecret = WXModel.AppSecret;

string openid = "";

openid = WXApi.GetOpenID(AppID, redirect_url, code, AppSecret);

return openid;

}

#endregion

类WXApi中加入GetOpenID方法

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21
#region 获取OpenId

/// <summary>

/// 获取OpenId

/// </summary>

public static string GetOpenID(string appid, string redirect_url, string code, string screct)

{

string strJson = "";

if (string.IsNullOrEmpty(code))

{

redirect_url = HttpUtility.UrlEncode(redirect_url);

HttpContext.Current.Response.Redirect(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",

appid, redirect_url, new Random().Next(1000, 200000).ToString()));

}

else

{

strJson = HttpRequestUtil.RequestUrl(string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code",

appid, screct, code));

}

return Tools.GetJsonValue(strJson, "openid");

}

#endregion

?

1

2

3

4

5

6
public static class WXModel

{

public static string access_token;

public static string AppID;

public static string AppSecret;

}

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34
/// <summary>

/// 工具类

/// </summary>

public class Tools

{

#region 获取Json字符串某节点的值

/// <summary>

/// 获取Json字符串某节点的值

/// </summary>

public static string GetJsonValue(string jsonStr, string key)

{

string result = string.Empty;

if (!string.IsNullOrEmpty(jsonStr))

{

key = "\\"" + key.Trim('"') + "\\"";

int index = jsonStr.IndexOf(key) + key.Length + 1;

if (index > key.Length + 1)

{

//先截逗号,若是最后一个,截“}”号,取最小值

int end = jsonStr.IndexOf(',', index);

if (end == -1)

{

end = jsonStr.IndexOf('}', index);

}

result = jsonStr.Substring(index, end - index);

result = result.Trim(new char[] { '"', ' ', '\\'' }); //过滤引号或空格

}

}

return result;

}

#endregion

}

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38
public class HttpRequestUtil

{

#region 请求Url,不发送数据

/// <summary>

/// 请求Url,不发送数据

/// </summary>

public static string RequestUrl(string url)

{

return RequestUrl(url, "POST");

}

#endregion

#region 请求Url,不发送数据

/// <summary>

/// 请求Url,不发送数据

/// </summary>

public static string RequestUrl(string url, string method)

{

// 设置参数

HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;

CookieContainer cookieContainer = new CookieContainer();

request.CookieContainer = cookieContainer;

request.AllowAutoRedirect = true;

request.Method = method;

request.ContentType = "text/html";

request.Headers.Add("charset", "utf-8");

//发送请求并获取相应回应数据

HttpWebResponse response = request.GetResponse() as HttpWebResponse;

//直到request.GetResponse()程序才开始向目标网页发送Post请求

Stream responseStream = response.GetResponseStream();

StreamReader sr = new StreamReader(responseStream, Encoding.Default);

//返回结果网页(html)代码

string content = sr.ReadToEnd();

return content;

}

#endregion

}

注意:需要在微信公众平台中设置授权回调域

MVC微信网页授权获取用户OpenId

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 MVC微信网页授权获取用户OpenId https://www.kuaiidc.com/100566.html

相关文章

发表评论
暂无评论