[{"id":"bcb0874d-299b-448e-9552-9e9b25ef80dd","tags":[{"product":null,"links":null,"id":"ba7e818e-4f6b-4211-b1ac-58e3bafcf439","name":"\u66F4\u65B0","color":"orange","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"8ce3627e-9e58-471b-9133-4f135d191e7b","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"ae60ae59-34f5-4f32-a8eb-243ed1457543","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"3d4848c3-910f-4ffa-9153-60bb507334a9","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"133f4ca6-d951-4d65-a618-3dc6301266f7","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"de62ec1c-813e-40b1-8160-a4cd109afe64","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"2426c71d-8332-4cbd-a436-1ec4f8666464","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"2ce7b6b0-78aa-4e4b-bf8a-e4ba2f988298","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"4706db46-0811-4652-8f59-1e0a1da84758","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"8f1271bb-2cd9-4f39-9897-c15b239ee7ab","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"677e13a7-6f3e-449f-986c-2c3a26f8d54f","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"5e40f6dc-caec-49d7-a1d0-be65f06815ba","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"2457f0e0-9e71-4860-a87d-065e0fb84f84","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"d5c67fd0-1145-482c-9113-97b492c44c18","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"a609a8fa-ab91-4c1d-a1c3-d209d0463303","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]},{"id":"b4a9eb15-94e5-48df-b218-a24138f0cf9c","tags":[{"product":null,"links":null,"id":"adf72f47-7f61-4239-8392-b9bcc127fa80","name":"\u65B0\u589E","color":"green","productId":"0995490e-43fc-4d6e-bc8d-8e66f38b0c63"}]}]
系统的登录 API 通过 HTTP 协议调用,调用 URL 为 http://x.x.x.x:51980/connect/token
。因此,无论是 .NET 还是 Java 程序,都可以调用此 API 以实现后台登录。
调用过程包括两个主要步骤:
1. 将授权客户端信息加入请求头
授权客户端信息就是上一小节( 登录API客户端管理 )介绍的客户端ID和授权码。
2. 将用户名和密码信息 POST 到 API 的 URL
如果登录成功,返回结果将包含访问令牌(access_token);如果登录失败,返回结果将包含错误信息。
下面以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;
}
下面的附件文件是一个调用登录 AP I的 Java 示例代码文件。
这个示例演示了调用 API 的过程,调用成功后,将 API 返回信息直接显示在页面上。实际项目中,一般是取出其中的access_token,并放进session中以备业务系统集成具体报表或仪表板时使用。
下面附件文件是一个前端调用登录API的示例代码文件。
下载并双击打开,修改 Wyn 的登录信息,点击按钮获取令牌:
实际使用时,请使用文本编辑工具打开示例文件,以参考代码。