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的登录信息,点击按钮获取令牌:
实际使用时,请使用文本编辑工具打开示例文件,以参考代码。