Skip to content

Commit 643df40

Browse files
committed
网页获取用户信息Demo
1 parent 9f81f53 commit 643df40

14 files changed

Lines changed: 399 additions & 13 deletions

‎Business/OAuth/OAuthHelper.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public OAuthHelper(string appId)
2020
public string BuildOAuthUrl(string redirectUrl, OAuthScope scope, string state)
2121
{
2222
return String.Format(s_weixin_oauth_format_url,
23-
AppID, redirectUrl, scope, state);
23+
AppID, redirectUrl, scope.ToString().ToLower(), state);
2424
}
2525
}
2626
}

‎WebDemo/OAuthUserInfoDemo.aspx‎

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="OAuthUserInfoDemo.aspx.cs" Inherits="WebDemo.OAuthUserInfoDemo" %>
2+
3+
<!DOCTYPE html>
4+
5+
<html xmlns="http://www.w3.org/1999/xhtml">
6+
<head runat="server">
7+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
8+
<title></title>
9+
<style>
10+
input[type=submit] {
11+
width:90%;
12+
height:1.4em;
13+
font-size:0.9em;
14+
}
15+
body {
16+
font-size:4em;
17+
}
18+
</style>
19+
</head>
20+
<body>
21+
<form id="form1" runat="server">
22+
<div style="width:90%;">
23+
<p>Code:<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></p>
24+
<p><asp:Button ID="Button1" runat="server" Text="获取Token" OnClick="Button1_Click" /><asp:Button ID="Button2" runat="server" Text="刷新Token" OnClick="Button2_Click" /></p>
25+
<p>AccessToken:<asp:Label ID="Label2" runat="server" Text=""></asp:Label></p>
26+
<p>RefreshToken:<asp:Label ID="Label3" runat="server" Text=""></asp:Label></p>
27+
<p><asp:Button ID="Button3" runat="server" Text="获取用户信息" OnClick="Button3_Click" /></p>
28+
<p>用户昵称:<asp:Label ID="Label4" runat="server" Text=""></asp:Label></p>
29+
<p>用户ID:<asp:Label ID="Label5" runat="server" Text=""></asp:Label></p>
30+
<p>错误信息:<asp:Label ID="Label6" runat="server" Text=""></asp:Label></p>
31+
</div>
32+
</form>
33+
</body>
34+
</html>

‎WebDemo/OAuthUserInfoDemo.aspx.cs‎

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Configuration;
4+
using System.Linq;
5+
using System.Web;
6+
using System.Web.UI;
7+
using System.Web.UI.WebControls;
8+
using WX.Api;
9+
using WX.Model;
10+
using WX.Model.ApiRequests;
11+
12+
namespace WebDemo
13+
{
14+
public partial class OAuthUserInfoDemo : System.Web.UI.Page
15+
{
16+
private IApiClient m_client = new DefaultApiClient();
17+
private AppIdentication m_appIdent = new AppIdentication(
18+
ConfigurationManager.AppSettings["wxappid"],
19+
ConfigurationManager.AppSettings["wxappsecret"]);
20+
21+
protected void Page_Load(object sender, EventArgs e)
22+
{
23+
if (Request["Code"] == null)
24+
{
25+
throw new ArgumentNullException("Code is null");
26+
}
27+
28+
Label1.Text = Request["Code"];
29+
Label6.Text = "";
30+
}
31+
32+
protected void Button1_Click(object sender, EventArgs e)
33+
{
34+
var request = new SnsOAuthAccessTokenRequest
35+
{
36+
AppID = m_appIdent.AppID,
37+
AppSecret = m_appIdent.AppSecret,
38+
Code = Label1.Text
39+
};
40+
var response = m_client.Execute(request);
41+
if (!response.IsError)
42+
{
43+
Label2.Text = response.AccessToken;
44+
Label3.Text = response.RefreshToken;
45+
Label5.Text = response.OpenId;
46+
}
47+
else
48+
{
49+
Label6.Text = response.ToString();
50+
}
51+
}
52+
53+
protected void Button2_Click(object sender, EventArgs e)
54+
{
55+
var request = new SnsOauthRefreshTokenRequest
56+
{
57+
AppID = m_appIdent.AppID,
58+
RefreshToken = Label3.Text
59+
};
60+
var response = m_client.Execute(request);
61+
if (!response.IsError)
62+
{
63+
Label2.Text = response.AccessToken;
64+
Label3.Text = response.RefreshToken;
65+
Label5.Text = response.OpenId;
66+
}
67+
else
68+
{
69+
Label6.Text = response.ToString();
70+
}
71+
}
72+
73+
protected void Button3_Click(object sender, EventArgs e)
74+
{
75+
var request = new SnsUserInfoRequest
76+
{
77+
OAuthToken = Label2.Text,
78+
Lang = Language.CN,
79+
OpenId = Label5.Text
80+
};
81+
var response = m_client.Execute(request);
82+
if (response.IsError)
83+
{
84+
Label6.Text = response.ToString();
85+
}
86+
else
87+
{
88+
Label4.Text = response.NickName;
89+
}
90+
}
91+
}
92+
}

‎WebDemo/OAuthUserInfoDemo.aspx.designer.cs‎

Lines changed: 105 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎WebDemo/Oauth2Demo.aspx‎

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,20 @@
1111
<form id="form1" runat="server">
1212
<div>
1313
<h1>网页授权获取用户基本信息</h1>
14-
<h3>您好:</h3>
15-
<b>昵称:</b><em><%= WeiXinUser.Nickname %></em><br />
16-
<b>openid:</b><em><%= WeiXinUser.OpenId %></em><br />
17-
<b>Code</b><em><%= this.Code %></em>
18-
14+
<h2>第一步:选择类型</h2>
15+
<p>SnsApi_Base:无需弹窗认证,只需不弹出授权页面,直接跳转,只能获取用户openid</p>
16+
<p>Snsapi_userinfo:弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息</p>
17+
<p>
18+
<asp:DropDownList ID="DropDownList1" runat="server">
19+
<asp:ListItem Value="0">请选择</asp:ListItem>
20+
<asp:ListItem Value="snsapi_base">SnsApi_Base</asp:ListItem>
21+
<asp:ListItem Value="snsapi_userinfo">SnsApi_UserInfo</asp:ListItem>
22+
</asp:DropDownList><asp:Button ID="Button1" runat="server" Text="生成二维码" OnClick="Button1_Click" /></p>
23+
<p>请用微信扫一扫功能,扫描以下二维码:</p>
24+
<p>
25+
<asp:Image ID="Image1" Visible="false" Width="200" Height="200" runat="server" /></p>
26+
<p>
27+
<asp:Label ID="Label1" runat="server" Text=""></asp:Label></p>
1928
</div>
2029
</form>
2130
</body>

‎WebDemo/Oauth2Demo.aspx.cs‎

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,42 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Configuration;
34
using System.Linq;
45
using System.Web;
56
using System.Web.UI;
67
using System.Web.UI.WebControls;
8+
using WX.Model;
79
using WX.Model.ApiResponses;
10+
using WX.OAuth;
811

912
namespace WebDemo
1013
{
1114
public partial class Oauth2Demo : System.Web.UI.Page
1215
{
1316
protected void Page_Load(object sender, EventArgs e)
1417
{
15-
WeiXinUser = new UserInfoResponse
16-
{
17-
Nickname = "jaemsying"
18-
};
19-
Code = Request["Code"];
18+
2019
}
2120

22-
public UserInfoResponse WeiXinUser { get; set; }
21+
protected void Button1_Click(object sender, EventArgs e)
22+
{
23+
if (DropDownList1.SelectedValue != "0")
24+
{
25+
Image1.ImageUrl = "~/Qrcodepage.aspx?api=" + DropDownList1.SelectedValue;
26+
Image1.Visible = true;
27+
var manager = new OAuthHelper(ConfigurationManager.AppSettings["wxappid"]);
28+
var url = manager.BuildOAuthUrl("http://wx.taogame.com/OAuthUserInfoDemo.aspx",
29+
DropDownList1.SelectedValue == "snsapi_base" ? OAuthScope.Base : OAuthScope.UserInfo,
30+
DropDownList1.SelectedValue);
31+
Label1.Text = url;
32+
}
33+
else
34+
{
35+
Image1.Visible = false;
36+
Label1.Visible = true;
37+
}
38+
}
2339

24-
public string Code { get; set; }
40+
2541
}
2642
}

‎WebDemo/Oauth2Demo.aspx.designer.cs‎

Lines changed: 36 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎WebDemo/QrcodePage.aspx‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="QrcodePage.aspx.cs" Inherits="WebDemo.QrcodePage" %>

0 commit comments

Comments
 (0)