Wiwiz Auth API集成示例代码(ASP.Net)
?Download WiwizAuthApiSample.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="WiwizAuthApiSample_aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> 用户名: <asp:TextBox ID="username" runat="server"></asp:TextBox> <br /> 密码: <asp:TextBox ID="pswd" runat="server" TextMode="Password"></asp:TextBox> <br /> <asp:Button ID="login" runat="server" onclick="Login_Click" Text="登录" /> <br /> <asp:Label ID="LabelMsg" runat="server" Text=""></asp:Label> <br /> </form> </body> </html> |
?Download WiwizAuthApiSample_aspx.cs
using System; using System.IO; using System.Text; using System.Web; using System.Net; public partial class _Default : System.Web.UI.Page { string userkey = "246DD22C084BB40E"; // 替换为你的User Key protected void Page_Load(object sender, EventArgs e) { //**************************************************** // 取得接收到的传入参数 //**************************************************** Session.Add("tokencode", Request.Params["tokencode"]); // 接收到的传入参数"tokencode" Session.Add("srvurl", Request.Params["srvurl"]); // 接收到的传入参数"srvurl" } protected void Login_Click(object sender, EventArgs e) { //**************************************************** // 第1步. 根据您的具体需要或业务,进行用户登录验证处理 //**************************************************** bool loginSuccess = false; // 根据系统自身的业务需求进行自己的账户验证/登录验证等处理 // ...... // loginSuccess = true; // 这里假设用户登录已验证 if(loginSuccess == false) { LabelMsg.Text = "登录失败!"; // 如果登录失败则报错 } else { //**************************************************** // 第2步. 调用Wiwiz Auth API,进行预认证 // 重要: 请在服务器端的程序中进行此处理(例如,ASP、C#、JSP/Servet、PHP...), // 而不要在直接客户端代码中进行此处理(例如,HTML/Javascript) //**************************************************** // 参数 "action" : 必须! // 设置为"1"将使用户认证成功 // 设置为"0"将使用户认证失败 string action = "1"; // 参数 "tokencode": 必须! // 设置与同名传入参数相同的值 string tokencode = (string) Session["tokencode"]; // 参数 "srvurl": 必须! // 设置与同名传入参数相同的值 string srvurl = (string) Session["srvurl"]; // 参数 "endtime" : 可选 // 格式: yyyy-mm-dd hh:MM:ss 例如: 2014-05-31 21:39:00 // 设置此参数将使用户的Internet连接在指定时间关闭 // 注意: 对此参数的值必须进行url编码 string endtime = Server.UrlEncode("2014-05-31 21:39:00"); // 参数 "postauth" : 可选 // 例如: http://www.YourDomain.com // 设置此参数将设置用户在通过认证后显示的页面地址 string postauth = "http://www.wiwiz.com"; string parameters = "wiwiz_auth_api=1&ver=1.0"+ // 参数 "wiwiz_auth_api" 与 "ver". 固定值 "&tokencode="+ tokencode + // 参数 "tokencode". 设置方法参考上面的说明 "&userkey="+ userkey + // 参数 "userkey". 设置方法参考上面的说明 "&action="+ action + // 参数 "action". 设置方法参考上面的说明 "&endtime="+ endtime + // 参数 "endtime". 设置方法参考上面的说明 "&postauth="+ postauth; // 参数 "postauth". 设置方法参考上面的说明 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(srvurl); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII); streamOut.Write(parameters); streamOut.Close(); StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream()); string verifycode = streamIn.ReadToEnd(); // 获取verifycode,即Wiwiz服务端返回的验证结果 streamIn.Close(); string userstring = "username:" + username.Text; // 设置自定义追踪信息(可选),本例中设为用户名 if(verifycode.StartsWith("ERR")) { // 如果报错,则显示错误代码 LabelMsg.Text = "Error: " + verifycode; } else { // 如没有报错则进行第3步。 //**************************************************** // 第3步. 调用Wiwiz Auth API,完成认证 //**************************************************** string redirectUrl = srvurl + // 使用传入参数"srvurl"的值作为跳转地址的前缀 "?wiwiz_auth_api_login=1" + // 参数 "wiwiz_auth_api_login",固定值 "&tokencode=" + tokencode + // 参数 "tokencode",设置与同名传入参数相同的值 "&verifycode=" + verifycode + // 参数 "verifycode",Wiwiz服务端返回的验证结果 "&userstring=" + userstring; // 参数 "userstring"(可选),用户设置的自定义追踪信息 Response.Redirect(redirectUrl); // 最后,进行跳转 } } } } |