接入管理用于授权第三方系统访问LarkXR平台,以防止未经授权的第三方随意集成LarkXR。
adminKey和adminSecret用于接口安全调用
部分接口(如上传应用、修改应用等)需要安全调用,凭证在15分钟后会过期,此时接口将无法访问。为了确保接口调用的安全性,需要重新计算签名参数以生成新的接口地址。
签名生成步骤:
将adminKey、adminSecret和当前时间戳(long型数值)按字母序排序,然后进行SHA-1摘要签名。示例代码将在文末提供。
将时间戳和签名分别命名为timestamp和signature。
将adminKey、timestamp、signature参数放入接口参数中。具体使用规则请参考开发版接口文档。
请参考下方示例代码以生成签名:
java代码示例
public static String getSignature( String key, String secret, String timestamp){
String[] arr = new String[] { key, secret, timestamp };
// appKey、appSecret、timestamp三个参数进行字典序排序
Arrays.sort(arr);
StringBuilder sb = new StringBuilder();
//将三个参数字符串拼接成一个字符串
for (int i = 0; i < arr.length; i++) {
sb.append(arr[i]);
}
MessageDigest md;
String signature = null;
try {
md = MessageDigest.getInstance("SHA-1");
// 进行sha1摘要
byte[] digest = md.digest(sb.toString().getBytes());
signature = byteToStr(digest);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return signature;
}
/**
* 将字节数组转换为十六进制字符串
*
* @param byteArray
* @return
*/
private static String byteToStr(byte[] byteArray) {
String strDigest = "";
for (int i = 0; i < byteArray.length; i++) {
strDigest += byteToHexStr(byteArray[i]);
}
return strDigest;
}
/**
* 将字节转换为十六进制字符串
*
* @param mByte
* @return
*/
private static String byteToHexStr(byte mByte) {
char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
char[] tempArr = new char[2];
tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
tempArr[1] = Digit[mByte & 0X0F];
String s = new String(tempArr);
return s;
}
PHP代码示例
// 排序
sort($arr, SORT_NATURAL);
$string = implode('', $arr);
$signature = sha1($string);