佐须之男 发布的文章

wifidog认证Wiwiz Query API参考手册与接口规范

功能描述
Wiwiz Query API是Wiwiz HotSpot Builder提供的基于Web的外部开发接口。调用它可以用于查询以下信息:

  1. 当前热点连接信息
  2. 热点的连接履历
  3. 热点使用者在使用热点认证时输入的手机号码

使用条件与要求
1.已拥有Wiwiz专业版账户。
2.查询Wiwiz账户的User Key(*注1)

调用概要
调用Wiwiz Query API时,用户需向指定URL发送HTTP请求,发送请求时应根据接口规范指定参数(GET或POST方式皆可)。查询的结果数据以HTTP响应的形式(XML格式)返回。

无报错情况下的HTTP响应数据的格式样例:

<?xml version="1.0" encoding="UTF-8"?>
<result>
    <status>
        <code>OK</code>
        <message>Query Completed</message>
    </status>
    <data>
        <record>
            ……
        </record>
        <record>
            ……
        </record>
        ……
    </data>
</result>

有报错情况下的HTTP响应数据的格式样例:

<?xml version="1.0" encoding="UTF-8"?>
<result>
    <status>
        <code>STATUS CODE</code>
        <message>STATUS CODE DESCIRPTION</message>
    </status>
    <data></data>
</result>

接口规范

  1. 查询当前热点连接信息

请求URL: http://cp.wiwiz.com/as/qapi/conn/

请求参数说明:

1.png

返回数据说明:

2.png

  1. 查询热点的连接履历

请求URL: http://cp.wiwiz.com/as/qapi/connlog/

请求参数说明:
3.png

返回数据说明:
4.png

  1. 查询热点使用者在使用热点认证时输入的手机号码

请求URL: http://cp.wiwiz.com/as/qapi/mobile/

请求参数说明:
5.png

返回数据说明:
6.png

注解
注1:User Key可在Wiwiz Web面板的“用户菜单”->“升级选项”->“查询User Key”中查询。

注2:状态码说明:
7.png

注3:国家地区代码的含义:
AR:阿根廷
AT:奥地利
AU:澳大利亚
BE:比利时
BR:巴西
CA:加拿大
CH:瑞士
CN:中国
DE:德国
DK:丹麦
ES:西班牙
FR:法国
GB:英国
HK:中国香港特别行政区
ID:印度尼西亚
IE:爱尔兰
IL:以色列
IN:印度
IT:意大利
JO:约旦
JP:日本
KR:韩国
KY:开曼群岛
LU:卢森堡
MO:中国澳门特别行政区
MX:墨西哥
MY:马来西亚
NL:荷兰
NO:挪威
NZ:新西兰
PH:菲律宾
PK:巴基斯坦
PL:波兰
SE:瑞典
SG:新加坡
TH:泰国
TR:土耳其
TW:台湾
US:美国
ZA:南非

本文章由 http://www.wifidog.pro/2015/03/23/wifidog%E8%AE%A4%E8%AF%81wiwiz-query-API.html 整理编辑,转载请注明出处

wifidog认证Wiwiz Auth API集成示例代码(ASP.Net)

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>

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); // 最后,进行跳转
            }
        }
    }
}
  1. 本文章由 http://www.wifidog.pro/2015/03/23/wifidog%E8%AE%A4%E8%AF%81APS%E7%89%88.html 整理编辑,转载请注明出处

wifidog认证服务器Wiwiz Auth API集成示例代码(PHP版)

<?php

$userkey = "8C447CEAC649C9CC";  // replace with your own user key

//****************************************************
// Gets incoming parameters
//****************************************************

$pTokencode = $_REQUEST["tokencode"];   // incoming parameter "tokencode"
$pSrvurl = $_REQUEST["srvurl"];     // incoming parameter "srvurl"

session_start();
if($pTokencode != null) 
    $_SESSION['tokencode'] = $pTokencode;
if($pSrvurl != null)
    $_SESSION['srvurl'] = $pSrvurl;
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Language" content="zh">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<title> Wiwiz Auth API Usage Sample </title>
</head>
<body>

<form method="post">

User Name: <input type="text" name="username" />
<br>

Password: <input type="password" name="pswd" />
<br>

<input type="submit" name="login" value="Login" />
<br>

<?php
if(isset($_REQUEST['login'])) { // if "Login" button is clicked

    //****************************************************
    // Step 1. Do your business. E.g. check user login ... 
    //****************************************************

    $loginSuccess = false;
    //
    // Do something you need.
    // e.g. verify the user
    //      ......
    //

    $loginSuccess = true; // assume login successful

    if($loginSuccess == false) {

        echo "Login Failed!";   // if user login failed, show an error message

    } else {

        //****************************************************
        // Step 2. Do the pre-auth by calling Wiwiz Auth API
        // IMPORTANT: Do this on your server side(ASP, C#, JSP/Servlet, PHP...), 
        //            but DO NOT do this on your client side (HTML/Javascript)
        //****************************************************

        // parameter "action" : REQUIRED!
        // set it to "1" to authenticate the user
        // set it to "0" to block the user
        $action = "1";

        // parameter "tokencode": REQUIRED!
        // set identical to the incoming parameter
        $tokencode = $_SESSION['tokencode'];

        // parameter "srvurl": REQUIRED!
        // set identical to the incoming parameter  
        $srvurl = $_SESSION['srvurl'];

        // parameter "endtime" : OPTIONAL
        // Format: yyyy-mm-dd hh:MM:ss  e.g. 2012-05-31 21:39:00
        // set this parameter to set the time to close the user's Internet connection 
        // Note: the value must be url-encoded.  
        $endtime = urlencode('2012-05-31 21:39:00');

        // parameter "postauth" : OPTIONAL
        // E.g. http://www.YourDomain.com
        // set this parameter to redirect to a specified URL after authenticated.
        // Note: the value should be url-encoded.  
        $postauth = urlencode("http://www.wiwiz.com");

        $parameters = "?wiwiz_auth_api=1&ver=1.0". // parameter "wiwiz_auth_api" and "ver". Fixed value
                "&tokencode=". $tokencode . // parameter "tokencode". See above
                "&userkey=". $userkey .     // parameter "userkey". Set your own User Key
                "&action=". $action .       // parameter "action". See above
                "&endtime=". $endtime .     // parameter "endtime". See above
                "&postauth=". $postauth;    // parameter "postauth". See above

        $verifycode = file_get_contents($srvurl . $parameters); // gets "verifycode" - the verification result from Wiwiz server side

        $userstring = $_REQUEST['username'];                    // sets the Track Data (Optional), e.g. username

        if (strpos ($verifycode, "ERR") === 0) {
            // if there is an error, show error code
            echo "Error: ". $verifycode;

        } else {
            // OK, now. do Step 3.

            //****************************************************
            // Step 3. Complete the Authentication by calling Wiwiz Auth API
            //****************************************************  
            $redirectUrl = $srvurl.     // use the value of incoming parameter "srvurl" as the redirection address
                    "?wiwiz_auth_api_login=1".  // parameter "wiwiz_auth_api_login"
                    "&tokencode=". $tokencode . // parameter "tokencode", set identical to the incoming parameter   
                    "&verifycode=". $verifycode .   // parameter "verifycode", the verification result from Wiwiz server side
                    "&userstring=". $userstring;    // parameter "userstring" (Optional), the Track Data set by the user

            ob_start();
            header("Location: ". $redirectUrl); // finally, do the redirection
            ob_flush();

//          echo "<script>location.href=\"". $redirectUrl ."\"</script>";

        }

    }
}
?>

</form>

</body>
</html>

本文章由 http://www.wifidog.pro/2015/03/20/wifidog%E8%AE%A4%E8%AF%81%E6%9C%8D%E5%8A%A1%E5%99%A8PHP%E7%89%88.html 整理编辑,转载请注明出处

wifidog认证服务器Wiwiz Auth API集成示例代码(Java/JSP版)

<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>

<%@ page import="java.net.URL"%>
<%@ page import="java.net.URLConnection"%>
<%@ page import="java.net.URLEncoder"%>

<%
String userkey = "246DD22C084BB40E";    // 替换为你的User Key

//****************************************************
// 取得接收到的传入参数
//****************************************************

String pTokencode = request.getParameter("tokencode");  // 接收到的传入参数"tokencode"
String pSrvurl = request.getParameter("srvurl");        // 接收到的传入参数"srvurl"


/* 如必要,把传入参数存放于Session对象中 */
if(pTokencode != null)
    session.setAttribute("tokencode", pTokencode);
if(pSrvurl != null) 
    session.setAttribute("srvurl", pSrvurl);
%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Language" content="zh">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<title> Wiwiz Auth API使用示例 </title>
</head>
<body>

<form method="post">

用户名: <input type="text" name="username" />
<br>

密码: <input type="password" name="pswd" />
<br>

<input type="submit" name="login" value="登录" />

<%
if(request.getParameter("login") != null) { // "登录"按钮按下后的处理

    //****************************************************
    // 第1步. 根据您的具体需要或业务,进行用户登录验证处理
    //****************************************************

    boolean loginSuccess = false;
    //
    // 根据系统自身的业务需求进行自己的账户验证/登录验证等处理
    //  ......
    //

    loginSuccess = true; // 这里假设用户登录已验证

    if(loginSuccess == false) {

        out.println("登录失败!");   // 如果登录失败则报错

    } else {

        //****************************************************
        // 第2步. 调用Wiwiz Auth API,进行预认证
        // 重要: 请在服务器端的程序中进行此处理(例如,ASP、C#、JSP/Servet、PHP...),
        //      而不要在直接客户端代码中进行此处理(例如,HTML/Javascript)
        //****************************************************

        // 参数 "action" : 必须!
        // 设置为"1"将使用户认证成功
        // 设置为"0"将使用户认证失败
        String action = "1";

        // 参数 "tokencode": 必须!
        // 设置与同名传入参数相同的值
        String tokencode = (String) session.getAttribute("tokencode");

        // 参数 "srvurl": 必须!
        // 设置与同名传入参数相同的值
        String srvurl = (String) session.getAttribute("srvurl");

        // 参数 "endtime" : 可选
        // 格式: yyyy-mm-dd hh:MM:ss  例如: 2012-05-31 21:39:00
        // 设置此参数将使用户的Internet连接在指定时间关闭
        // 注意: 对此参数的值必须进行url编码  
        String endtime = URLEncoder.encode("2012-05-31 21:39:00", "utf-8");

        // 参数 "postauth" : 可选
        // 例如: http://www.YourDomain.com
        // 设置此参数将设置用户在通过认证后显示的页面地址
        // 注意: 对此参数的值应进行url编码   
        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". 设置方法参考上面的说明

        URL u = new URL(srvurl);            // 使用传入参数"srvurl"的值作为请求地址
        URLConnection uc = u.openConnection();
        uc.setDoOutput(true);
        uc.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
        PrintWriter pw = new PrintWriter(uc.getOutputStream());
        pw.println(parameters);
        pw.close();

        BufferedReader in = new BufferedReader(
        new InputStreamReader(uc.getInputStream()));
        String verifycode = in.readLine();  // 获取verifycode,即Wiwiz服务端返回的验证结果
        in.close();

        String userstring = "username:" + request.getParameter("username"); // 设置自定义追踪信息(可选),本例中设为用户名

        if(verifycode.startsWith("ERR")) {
            // 如果报错,则显示错误代码
            out.println("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.sendRedirect(redirectUrl); // 最后,进行跳转
        }
    }
}
%>

</form>

</body>
</html>

本文章由 http://www.wifidog.pro/2015/03/20/wifidog%E8%AE%A4%E8%AF%81%E6%9C%8D%E5%8A%A1%E5%99%A8java-jsp%E7%89%88.html 整理编辑,转载请注明出处