Page tree
Skip to end of metadata
Go to start of metadata

1. 内容概述



系统的登录API通过HTTP协议调用,调用URL为 http://x.x.x.x:51980/connect/token 。因此,无论是.NET还是Java程序,都可以调用此API以实现后台登录。


2. 操作步骤



调用过程包括两个主要步骤:

(1)   将授权客户端信息加入请求头

授权客户端信息就是上一小节( 登录API客户端管理 )介绍的客户端ID和授权码。

(2)   将用户名和密码信息POST到API的URL

如果登录成功,返回结果将包含访问令牌(access_token);如果登录失败,返回结果将包含错误信息。


3. .NET程序调用登录API



下面以C#为例,介绍登录API的具体调用方法。

首先定义一个实体类TokenInfo,

public class TokenInfo
{
  public string access_token; // 令牌
  public int expires_in; // 令牌有效期(秒)
  public string token_type; // 令牌类型
  public string refresh_token; // 刷新令牌

  public string error; // 错误代码
  public string error_description; // 错误信息
}

这是API返回的JSON字串所对应的实体类。

下面的函数,就是调用登录API的具体代码:

private string GetWynToken(string apiUrl, string userName, string password)
{
  var client = new System.Net.Http.HttpClient();
  // API的调用者称为客户端(client),为了防止恶意调用,
  // 可在 http://localhost:51980/management 页面,管理允许调用API的客户端名称和授权码
  string clientName = "integration";
  string clientPassword = "eunGKas3Pqd6FMwx9eUpdS7xmz";
  string authorizationString = clientName + ":" + clientPassword;
  byte[] byteArray = System.Text.ASCIIEncoding.ASCII.GetBytes(authorizationString);
  // 客户端授权信息应转成Base64String,放在请求头中
  string base64 = System.Convert.ToBase64String(byteArray);
  client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", base64);
  // 准备提交数据,即待验证的用户名和密码
  string postData = "grant_type=password&username=" + userName + "&password=" + password;
  var postContent = new System.Net.Http.StringContent(postData, System.Text.Encoding.UTF8, "application/x-www-form-urlencoded");
  // 调用
  var res = client.PostAsync(apiUrl,postContent).Result;
  // 返回的结果是一个JSON字串
  var resJson = res.Content.ReadAsStringAsync().Result;
  // 反序列化为TokenInfo对象
  var ser = new System.Web.Script.Serialization.JavaScriptSerializer();
  var tokenInfo = ser.Deserialize<TokenInfo>(resJson);
  // 调用失败或者密码不对,会返回error
  if (!string.IsNullOrWhiteSpace(tokenInfo.error)) return tokenInfo.error_description;
  // access_token属性值是真正的令牌
  return tokenInfo.access_token;
}

4. Java程序调用登录API



下面的附件文件是一个调用登录API的Java示例代码文件。

wyn1.java

这个示例演示了调用API的过程,调用成功后,将API返回信息直接显示在页面上。实际项目中,一般是取出其中的access_token,并放进session中以备业务系统集成具体报表或仪表板时使用。

5. 前端调用登录API



下面附件文件是一个前端调用登录API的示例代码文件。

getToken.html


下载并双击打开,修改Wyn的登录信息,点击按钮获取令牌:

实际使用时,请使用文本编辑工具打开示例文件,以参考代码。



  • No labels