小鱼签名鉴权方法2.0可以按需选择加密方式,更为安全,推荐使用该签名方法计算API请求签名。使用签名鉴权2.0,需要使用域名 https://sdkapi.xylink.com (注意域名与签名1.0是不同的!)进行API调用请求。
小鱼会对每个请求的API的企业身份、公共参数、签名进行验证,故每个API请求都需要包括企业身份(enterpriseId)、clientid、clientSecret。所以您需要从云视讯管理平台获得enterpriseId、x-xy-clientid、x-xy-clientsecret,得到以上三个必要参数之后,方可通过xylink-cloudsdk进行请求调用。
请下载xylink-cloudsdk最新版本jar包以及源码包,通过源码包中的"readme.txt快速开始",以下为源码包中的例子:
package com.xylink.demo;
import com.xylink.config.SDKConfigMgr;
import com.xylink.config.SignatureVersion;
import com.xylink.log.XyLinkLogType;
import com.xylink.model.MeetingInfo;
import com.xylink.model.SdkMeeting;
import com.xylink.sdk.SdkMethodV2;
import com.xylink.util.Result;
import com.xylink.util.SignUtil;
import org.junit.Test;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* @Classname CreateMeetingRoom_sign2_0
* @Date 2023/10/31 11:38
* @Created by anan
* 单企业调用
* 签名2.0及以上需要的参数
* 1、apiHost
* 2、clientId
* 3、clientSecret
* 4、enterpriseId
*
* 初始化方式为:
* SDKConfigMgr.initSDKConfig();
*
* 概要流程为:
* 1、初始化配置SDKConfigMgr.initSDKConfig();
* 2、发起调用SdkMethodV2.xxx
* 3、处理返回结果
*/
public class CreateMeetingRoom_sign2_0 {
@Test
public void testMethod2_0() throws IOException {
//初始化配置
//初始化单个企业的
String apiHost = "https://sdkapi.xylink.com";
String clientId = "";
String clientSecret = "";
String enterpriseId = "";
//此处列出了所有的可用配置,用户需要根据实际情形进行填充
//SignatureVersion 是签名版本,如果无特殊需求请设置SignatureVersion.Signature_2_0
//SignUtil 为签名算法,如果无特殊需求请设置SignUtil.SignType.MD5
//enableSecurityHttp 为了安全考虑,我们会将DELTE、PUT替换为POST进行处理,如无特殊需求,请置为false
//extrasHeader 如果需要请求的时候带上额外的header
//我们支持多种日志输出方式,请根据实际情况进行选择配置
SDKConfigMgr.initSDKConfig(apiHost, clientId, clientSecret, enterpriseId, SignatureVersion.Signature_2_0, SignUtil.SignType.MD5, false,null, XyLinkLogType.Log4j);
//至此,jar包已经初始化完成,下面将是我们的调用环节, 签名2.0请使用SdkMethodV2,不要使用SdkMethodV1
//此处我们列举了创建会议室和查询会议室接口示例
//1.创建会议室
String url = "/api/rest/external/v1/create_meeting?enterpriseId=" + enterpriseId;
HashMap<String, Object> body = new HashMap<>();
body.put("meetingName", "sdk测试");
Result<SdkMeeting> result1 = SdkMethodV2.sdkPost(url, body, SdkMeeting.class);
if (result1.isSuccess()){
System.out.println("result: " + result1);
}else {
System.out.println(result1);
throw new RuntimeException("faild to Create Meeting Room");
}
//2.查询会议室
String meetingRoomNumber = result1.getData().getMeetingNumber();
String url1 = "/api/rest/external/v1/meetingInfo/"+meetingRoomNumber+"?enterpriseId=" + enterpriseId;
Result<MeetingInfo> result2 = SdkMethodV2.sdkGet(url1, MeetingInfo.class);
if (result2.isSuccess()){
System.out.println("result: " + result2);
}else {
System.out.println("result: " + result2);
throw new RuntimeException("faild to get Meeting Room");
}
//下面是调用post的示例,DELETE、PUT调用相应的方法即可
// Map<String,Object> body = new HashMap<String,Object>();
// Result<Map> mapResult = SdkMethodV1.sdkPost("", token, body, Map.class);
}
}