华为云用户手册

  • 数字签名CMS文件验签操作步骤 1.在"App SDK下载"章节中,“表1 Android/iOS/Windows/Mac/Electron UI SDK资源下载路径”中下载的SDK的包; 2.下载SDK包到本地; 3.从华为support官网https://support.huawei.com/additionalres/pki 下载根CA证书和4个吊销证书,文件如下: CA文件:Huawei Software Integrity Protection Root CA.der CRL文件:HuaweiRootCA.crl、HuaweiCodeSigningCA.crl、HuaweiCodeSigningCA 2.crl、HuaweiCodeSigningCA 3.crl 4.转换CA证书与CRL文件格式从DER到PEM CRL文件: openssl crl -inform DER -in "HuaweiRootCA.crl" -out HuaweiRootCaCrl.pem openssl crl -inform DER -in "HuaweiCodeSigningCA 3.crl" -out HuaweiCodeSigningCA3.pem openssl crl -inform DER -in "HuaweiCodeSigningCA 2.crl" -out HuaweiCodeSigningCA2.pem openssl crl -inform DER -in HuaweiCodeSigningCA.crl -out HuaweiCodeSigningCA.pem CA文件: openssl x509 -inform DER -in "Huawei Software Integrity Protection Root CA.der" -out HuaweiRootCA.pem 5. 记事本打开步骤4中的文件,将HuaweiRootCaCrl.pem、HuaweiCodeSigningCA3.pem、HuaweiCodeSigningCA2.pem和HuaweiCodeSigningCA.pem 4个文件内容依次粘贴到HuaweiRootCA.pem文件内容后面 6.CMS验证 openssl cms -verify -inform DER -crl_check_all -in hmwsdk-win-demo-win32.zip.cms -content hmwsdk-win-demo-win32.zip -CAfile HuaweiRootCA.pem -out cmsVerifiedData -binary -purpose any -certsout tmpCertChain.pem 命令执行结果示例,如下所示表示验签成功: CMS Verification successful
  • SHA256值比较操作步骤 1.在"App SDK下载"章节中,“表1 Android/iOS/Windows/Mac/Electron UI SDK资源下载路径”中下载的SDK的包; 2.下载SDK包到本地; 3.打开本地命令提示符框,输入如下命令,在本地生成已下载的SDK包的SHA256值,其中,“D:\hwmsdk-win-80.12.7.zip”为SDK包的本地存放路径和SDK包名,请根据实际情况修改。 certutil -hashfile D:\hwmsdk-win-80.12.7.zip SHA256 命令执行结果示例,如下所示: SHA256 的 D:\hwmsdk-win-80.12.7.zip 哈希: 85a691c46a56572ea092945e9565f7927e6c1b4c612b35d01b1c8a9524f8c498 CertUtil: -hashfile 命令成功完成。 对比查询的SDK包的SHA256值和下载后的SDK包的SHA256值。如果一致,则表示下载过程不存在篡改和丢包。
  • 参数描述 表1 HWMSDKPoorNetWorkQualityInfoModel参数说明 参数 类型 描述 userId NSUInteger 用户id nickName NSString * 会中昵称 thirdUserId NSString * 三方账号 accountId NSString * 账号信息 number NSString * sip号码 isLocal BOOL 是否本地 audioStatus HWMSDKLowNetWorkStatusInfoModel * 音频状态 videoStatus HWMSDKLowNetWorkStatusInfoModel * 视频状态 shareStatus HWMSDKLowNetWorkStatusInfoModel * 共享状态 corpId NSString * 企业ID 表2 HWMSDKLowNetWorkStatusInfoModel 参数说明 参数 类型 描述 packetLoss NSUInteger 丢包 delay NSUInteger 延迟 jitter NSUInteger 抖动 status HWMLowNetWorkStatus 状态 表3 枚举HWMLowNetWorkStatus说明 枚举值 描述 HWMLowNetWorkStatusNormal 网络正常 HWMLowNetWorkStatusBad 网络差 HWMLowNetWorkStatusVeryBad 网络非常差
  • queryContactAvatarWithAccount:thirdUserId:number:completionBlock: 接口描述 该接口用于定制登录后的会中头像显示。 注意事项 未登录的头像不支持自定义。 方法定义 1 2 - (void)queryContactAvatarWithAccount:(NSString *)account thirdUserId:(NSString *)thirdUserId number:(NSString *)number completionBlock:(void(^)(NSError * _Nullable error, UIImage * _Nullable avatarImage))completionBlock; 参数描述 表2 参数 类型 描述 account NSString * 账号密码登录场景下优先使用此字段 thirdUserId NSString * appid登录场景下优先使用此字段 number NSString * 跨企业场景优先使用此字段 返回值 无 示例代码 1 2 3 4 5 6 7 /// 拦截头像显示 - (void)queryContactAvatarWithAccount:(NSString *)account thirdUserId:(NSString *)thirdUserId number:(nonnull NSString *)number completionBlock:(void(^)(NSError * _Nullable error, UIImage * _Nullable avatarImage))completionBlock { /// 根据account或者thirdUserId 设置图片,下面的仅为示例代码 UIImage *image = [UIImage imageNamed:@"custom_conf_setting"]; completionBlock(nil, image); }
  • queryContactAvatarWithAvatarModel:completionBlock: 接口描述 该接口用于定制登录后的会中头像显示。 图1 生效后拦截头像显示效果 注意事项 未登录的头像不支持自定义。 方法定义 - (void)queryContactAvatarWithAvatalModel:(HWMConfQueryAvatarModel *)model completionBlock:(void(^)(NSError * _Nullable error, UIImage * _Nullable avatarImage))completionBlock; 参数描述 表1 HWMConfQueryAvatarModel参数说明 参数 类型 描述 account NSString * 账号密码登录场景下优先使用此字段 thirdUserId NSString * appid登录场景下优先使用此字段 number NSString * 跨企业场景优先使用此字段 orgId NSString * 企业ID 返回值 无 示例代码 /// 拦截头像显示 - (void)queryContactAvatarWithAvatalModel:(HWMConfQueryAvatarModel *)model completionBlock:(void(^)(NSError * _Nullable error, UIImage * _Nullable avatarImage))completionBlock{ /// 根据account或者thirdUserId 设置图片,下面的仅为示例代码 UIImage *image = [UIImage imageNamed:@"custom_conf_setting"]; completionBlock(nil, image); }
  • 数字签名CMS文件验签操作步骤 1.在"Demo安装包下载"章节中,“表1 Android/Windows/Mac/Electron Demo资源下载路径”中下载的Demo包; 2.下载Demo包到本地; 3.从华为support官网https://support.huawei.com/additionalres/pki 下载根CA证书和4个吊销证书,文件如下: CA文件:Huawei Software Integrity Protection Root CA.der CRL文件:HuaweiRootCA.crl、HuaweiCodeSigningCA.crl、HuaweiCodeSigningCA 2.crl、HuaweiCodeSigningCA 3.crl 4.转换CA证书与CRL文件格式从DER到PEM CRL文件: openssl crl -inform DER -in "HuaweiRootCA.crl" -out HuaweiRootCaCrl.pem openssl crl -inform DER -in "HuaweiCodeSigningCA 3.crl" -out HuaweiCodeSigningCA3.pem openssl crl -inform DER -in "HuaweiCodeSigningCA 2.crl" -out HuaweiCodeSigningCA2.pem openssl crl -inform DER -in HuaweiCodeSigningCA.crl -out HuaweiCodeSigningCA.pem CA文件: openssl x509 -inform DER -in "Huawei Software Integrity Protection Root CA.der" -out HuaweiRootCA.pem 5. 记事本打开步骤4中的文件,将HuaweiRootCaCrl.pem、HuaweiCodeSigningCA3.pem、HuaweiCodeSigningCA2.pem和HuaweiCodeSigningCA.pem 4个文件内容依次粘贴到HuaweiRootCA.pem文件内容后面 6.CMS验证 openssl cms -verify -inform DER -crl_check_all -in hmwsdk-win-demo-win32.zip.cms -content hmwsdk-win-demo-win32.zip -CAfile HuaweiRootCA.pem -out cmsVerifiedData -binary -purpose any -certsout tmpCertChain.pem 命令执行结果示例,如下所示表示验签成功: CMS Verification successful
  • SHA256值比较操作步骤 1.在"Demo安装包下载"章节中,“表1 Android/Windows/Mac/Electron Demo资源下载路径”中下载的Demo包; 2.下载Demo包到本地; 3.打开本地命令提示符框,输入如下命令,在本地生成已下载的Demo包的SHA256值,其中,“D:\hmwsdk-win-demo-win32.zip”为SDK包的本地存放路径和SDK包名,请根据实际情况修改。 certutil -hashfile D:\hmwsdk-win-demo-win32.zip SHA256 命令执行结果示例,如下所示: SHA256 的 D:\hmwsdk-win-demo-win32.zip 哈希: 67244236887ae862adbe2c8ee2f4612e5d483d0562087c7f084484318655d702 CertUtil: -hashfile 命令成功完成。 对比查询的Demo包的SHA256值和下载后的SDK包的SHA256值。如果一致,则表示下载过程不存在篡改和丢包。
  • StartP2pConf 接口描述 该接口用于发起立即会议。 注意事项 该接口为异步接口,返回值只代表接口是否调用成功,实际业务处理结果在对应的回调函数中返回。 方法定义 1 HWM_SDK_AGENT_API hwmsdk::HwmErrCode StartP2pConf(const HwmP2PStartCallInfo *startCallInfo); 回调函数 1 virtual void OnStartP2pConfResult(hwmsdk::HwmErrCode ret, const char* reason, HwmConfInfo *confInfo) {}; 参数描述 参数 是否必须 类型 描述 startCallInfo 是 HwmP2PStartCallInfo 发起立即会议信息。 表1 结构体HwmP2PStartCallInfo参数说明 参数 是否必须 类型 描述 callerInfo 是 HwmCallerInfo 主叫信息。 calleeInfo 是 HwmCalleeInfo 被叫信息。 mediaType 是 HwmMediaType 媒体类型。 isGuestJoinConfWithoutPwd 否 bool 是否来宾免密。 callInRestriction 否 HwmJoinConfPermissionType 呼入限制。 表2 结构体HwmCallerInfo参数说明 参数 是否必须 类型 描述 nickName 否 char[] 主叫名称。 表3 结构体HwmCalleeInfo参数说明 参数 是否必须 类型 描述 nickName 否 char[] 被叫名称。 number 是 char[] 号码。如果填分配给账号的sip号码(如+99111244216210249)则呼叫该账号的App;如果填PSTN号码(如18700000000),则通过VoIP网关呼叫该号码,前提是该企业已开通PSTN呼叫权限。与thirdUserId二选一,账号密码鉴权时使用。 thirdUserId 是 char[] 第三方用户ID。与number二选一,App ID鉴权时使用。 userUuid 否 char[] 与会者uuid。 type 否 HwmConfAttendeeType 会议用户类型。 orgId 否 char[] 企业id。 返回值 表4 返回值 类型 描述 HwmErrCode 成功返回0,其他值表示失败。失败返回值见错误码参考。 HwmConfInfo 会议信息。 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 /** * 发起立即会议 */ int demoStartP2pConfDlg::clickStartP2pConf() { hwmsdkagent::HwmP2PStartCallInfo data{}; //设置主叫信息 string callerNickName = CTools::UNICODE2UTF( CS tring("主叫名称")); strncpy_s(data.callerInfo.nickName, callerNickName.c_str(), HWM_MAX_DISPLAY_NAME_LEN); //设置被叫信息 string calleeNickName = CTools::UNICODE2UTF(CString("被叫名称")); strncpy_s(data.calleeInfo.nickName, calleeNickName.c_str(), HWM_MAX_DISPLAY_NAME_LEN); string calleeNumber = CTools::UNICODE2UTF(CString("123456")); strncpy_s(data.calleeInfo.number, calleeNumber.c_str(), HWM_MAX_NUMBER_LEN); string calleeThirdUserId = CTools::UNICODE2UTF(CString("123456")); strncpy_s(data.calleeInfo.calleeThirdUserId, calleeThirdUserId.c_str(), HWM_MAX_USER_ID_LEN); //设置媒体类型 data.mediaType = hwmsdkagent::HWM_MEDIA_TYPE_VIDEO //调用SDK接口 int ret = hwmsdkagent::StartP2pConf(&data); return ret; }
  • 参数描述 表1 结构体HwmAddAttendeeResultList参数说明 参数 类型 描述 addAttendeeResultSize unsigned int 添加与会者结果长度。 addAttendeeResults HwmAddAttendeeResult* 添加与会者结果列表。 表2 结构体HwmAddAttendeeResult参数说明 参数 类型 描述 number char[] 号码。 thirdUserId char[] 第三方账号。 resultCode HwmErrCode 错误码。 orgId char[] 企业id。
  • 头像拦截显示 接口描述 该接口用于定制登录后的头像显示。 调用场景: 图1 画中画模式 图2 画廊模式 图3 会中与会者列表 图4 悬浮窗 注意事项 未登录的头像不支持自定义。 方法定义 1 public Bitmap queryContactAvatar(ContactInfo contactInfo) 参数描述 表1 ContactInfo参数说明 参数 类型 描述 account String 账号密码登录场景下优先使用此字段 thirdUserId String appid登录场景下优先使用此字段 sipNumber String 跨企业场景优先使用此字段 orgId String 企业ID 返回值 表2 参数 类型 描述 bitmap Bitmap 头像位图类 示例代码 sdkConfig.setQueryContactAvatarStrategy(new IQueryContactAvatarStrategy() { @Override public Bitmap queryContactAvatar(ContactInfo contactInfo) { String extendedField = contactInfo.getExtendedField(); HCLog.i(TAG, "setQueryContactInfoStrategy account: " + StringUtil.formatString(contactInfo.getAccount()) + " thirdUserId: " + StringUtil.formatString(contactInfo.getThirdUserId()) + " sipNumber: " + StringUtil.formatString(contactInfo.getSipNumber()) + " extendedField: " + StringUtil.formatString(extendedField) + " realNameAccount : " + StringUtil.formatName(contactInfo.getRealNameAccount())); // 第三方查询通讯录,返回对应用户的头像图片,这里返回一张默认图片作为示例代码 return BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher); } }); 父主题: 界面定制
  • 修订记录 表1 修订记录 日期 版本 修订内容 2025-4-18 110.3.9 1. 支持企业池通讯录查询及邀请入会能力,新增企业ID字段。 2. 新增设置头像风格接口setAvatarStyle。 具体使用请见110.3.9更新内容 2025-3-27 110.3.5 1. 新增等候室成员列表变更通知onWaitingListChanged。 2. 新增设置管理面 域名 对应的保底ip地址接口setGlobalGuaranteedIpAddresses。 3. 新增获取自己开启共享状态接口getSelfShareState。 4. 新增结束共享接口stopShare。 5. 新增双击与会者项通知onDoubleClickParticipantListItemNotify。 6. 开启功能接口新增隐藏邀请结果提示枚举值HWM_CAPABILITY_HIDE_INVITE_RESULT_TOAST、隐藏与会者列表未入会标签枚举值HWM_CAPABILITY_SUPPORT_HIDE_OFFLINE_PARTICIPANT_LIST、是否支持自动接受远程控制(仅对win平台生效)HWM_CAPABILITY_SUPPORT_AUTO_ACCEPT_REMOTE_CONTROL。 7. 本地录制状态更新通知新增参数录制开始时间startTime。 8. 预约会议、编辑会议、周期会议新增会议开始时间startTimeStamp 、会议结束时间endTimeStamp,废弃原有字段startTime 、endTime。 9. 会议结束通知新增参数会议id confId。 具体使用请见110.3.5更新内容 2025-3-14 100.12.16 1. 问题修复,体验更稳定。 具体使用请见100.12.16更新内容 2025-2-28 100.12.13 1. 问题修复,体验更稳定。 具体使用请见100.12.13更新内容 2025-1-2 100.12.5 1. 新增接受会议邀请接口(仅win支持)、拒绝会议邀请接口(仅win支持)。 2. 新增本地录制状态更新通知(仅Mac支持)。 3. 发起立即会议接口新增参数是否来宾免密isGuestJoinConfWithoutPwd、允许入会范围限制confAllowJoinUser。 具体使用请见100.12.5更新内容 2024-12-3 100.10.7 1. 问题修复,体验更稳定。 具体使用请见100.10.7更新内容 2024-11-27 100.10.6 1. 问题修复,体验更稳定。 具体使用请见100.10.6更新内容 2024-11-18 100.10.5 1. Mac新增支持苹果自研M系列芯片版ElectronSDK。 2. 新增设置会控栏自动隐藏接口(仅win支持)。 3. 新增自定义指定场景文案接口。 4. 新增自定义指定场景图标接口(仅win支持)。 具体使用请见100.10.5更新内容 2024-10-31 100.9.7 1. 问题修复,体验更稳定。 具体使用请见100.9.7更新内容 2024-10-12 100.9.5 1. 新增会议开始时间startTimeStamp 、会议结束时间endTimeStamp,废弃原有字段startTime 、endTime。 2. 新增添加与会者结果通知OnAddAttendeeNotify。 3. 新增与会者列表全部呼叫注入通知OnClickInjectCallAllBtnNotify。 4. 新增用户数据路径变化通知OnUserSavePathChanged。 5. 会议来电信息新增thirdUserId第三方用户ID。 6. 点击注入按钮类型ClickInjectBtn新增与会者列表全部呼入HWM_CLICK_INJECT_BTN_CALL_ALL。 具体使用请见100.9.5更新内容 2024-10-12 100.7.13 1. 问题修复,体验更稳定。 具体使用请见100.7.13更新内容 2024-8-23 100.7.8 1. 问题修复,体验更稳定。 具体使用请见100.7.8更新内容 2024-8-16 100.7.6 1. 问题修复,体验更稳定。 具体使用请见100.7.6更新内容 2024-8-5 100.7.5 1. 新增设置登录服务器信息接口setServerAddress。 2. 新增设置代理信息接口setProxy。 3. 新增设置证书校验信息接口setCAVerifyInfo。 4. 新增设置屏幕共享中需透明的窗口接口setTransparentWnd。 5. 新增发起投屏接口startProjection。 6. 新增会中信息更新通知onMeetingInfoChanged。 7. 主窗口信息新增handle字段。 8. 预约会议、编辑会议、创建会议、获取会议详情新增autoMuteMode软终端是否自动静音、hardTerminalAutoMuteMode硬终端是否自动静音、defaultSummaryState会议云录制是否包含纪要。 9. 会议来电信息新增isP2pConf是否立即会议。 10. 企业配置通知新增corpEnableSummary企业是否支持会议纪要。 具体使用请见100.7.5更新内容 2024-6-13 100.5.5 1. 新增音频码流帧数据通知onAudioFrameNotify。 2. 新增音频码流开关接口setAudioRawDataOutputConfig。 3. 与会者基础信息新增userUUID字段。 具体使用请见100.5.5更新内容 2024-5-9 100.3.7 1. Mac平台修复会中不显示自定义头像问题,体验更稳定。 具体使用请见100.3.7更新内容 2024-4-23 100.3.6 1. 功能配置开关接口enableCapability新增是否支持与会者邀请枚举值HWM_CAPABILITY_SUPPORT_GUEST_INVITE。 2. 问题修复,体验更稳定。 具体使用请见100.3.6更新内容 2024-2-17 90.12.7 1. 问题修复,体验更稳定。 具体使用请见90.12.7更新内容 2024-1-5 90.12.5 1. 新增显示提示信息接口showToast。 2. 新增获取主窗口信息接口getMainWindowInfo。 3. 创建会议、预约会议新增参数会议资源类型confResType。 4. 新增共享vmr信息通知onShareVmrInfoNotify。 5. 新增获取错误提示接口getErrorMessage,文案可用于提示。 6. 新增设置(会控)保底ip地址接口setGuaranteedIpAddresses,支持下沉企业数据不上云或断网逃生。 7. config接口新增配置字段copy_audience_conf_info,支持网络研讨会中观众链接的复制按钮可注入。 具体使用请见90.12.5更新内容 2023-12-13 90.10.8 1. 问题修复,体验更稳定。 具体使用请见90.10.8更新内容 2023-11-23 90.10.5 1. 新增MMR立即会议记录回调onP2PConfRecordNotify。 2. ElectronSDK支持node文件与Electron版本解耦,集成方不用再重新编译node文件。 3. ElectronSDK工程包删除编译node文件的相关脚本。 具体使用请见90.10.5更新内容 2023-10-9 90.9.5 1. 新增concurrentParticipants 会议方数,会议最大与会人数限制。 2. 新增日志路径设置接口setLogPath。 3. 新增会议来电通知onConfIncomingNotify。 具体使用请见90.9.5更新内容 2023-8-24 90.7.5 windows平台问题修复,体验更稳定。 2023-8-10 90.7.5 1. 新增发起立即会议接口startP2pConf。 2. 新增获取用户保存路径接口getUserSavePath。 3. Random入会新增参数域名domain,离线入会场景使用。 具体使用请见90.7.5更新内容 2023-6-1 90.6.5 1. 发起呼叫接口StartCall废弃 2. 预约会议、编辑会议、创建会议、获取会议详情、会议信息通知新增用户自定义信息字段customInfo。 3. Init接口新增是否支持同终端多应用登录字段isSupportMultiAppLogin。 4. 新增弱网信息通知OnPoorNetworkQualityInfoNotify。 5. 新增错误码412100044(服务器降级),接入方收到该错误码时,可以继续调用入会接口离线入会(该错误码的适配方式请参考Demo)。 具体使用请见90.6.5更新内容 2023-5-11 80.15.21 1. 问题修复,体验更稳定。 具体使用请见80.15.21更新内容 2023-3-29 80.15.5 1. 设置网络模式接口setNetworkMode新增参数isForcedVpn。 具体使用请见80.15.5更新内容 2023-2-23 80.13.6 1. 问题修复,体验更稳定。 具体使用请见80.13.6更新内容 2023-2-7 80.13.5 1. 设置语言接口setLanguage新增自定义语言功能。 具体使用请见80.13.5更新内容 2023-1-17 80.12.7 1. 问题修复,体验更稳定。 具体使用请见80.12.7更新内容 2023-1-9 80.12.6 1. 功能配置开关接口enableCapability新增是否显示录制安全提示窗枚举值HWM_CAPABILITY_CONFIRM_RECORD。 2. 问题修复,体验更稳定。 具体使用请见80.12.6更新内容 2022-12-24 80.12.5 1.上传头像接口上传条件变更(增加类型和大小判断),win支持上传头像接口。 2. 问题修复,体验更稳定。 具体使用请见80.12.5更新内容 2022-11-16 80.10.5 1. 获取VMR列表接口和修改云会议室信息接口新增参数confAllowJoinUser、isOpenWaitingRoom。 2. 新增设置共享权限接口SetShareScreenPermission。 3. 加入会议接口新增参数isStopConflictConf。 4. 获取会议详情新增参数vmrConfIdType。 5. AppId登录接口新增参数deptCode。 具体使用请见80.10.5更新内容 2022-10-8 80.9.5 1. Mac补充获取会议详情、编辑会议接口新增参数allowLive。 2. 新增周期会议相关接口。 3. 功能配置开关接口新增分组讨论功能开关枚举值HWM_CAPABILITY_BREAKOUT_CONF。 4. 会议信息通知新增参数isInBreakoutSubConf。 5. Electron SDK补充常见错误码。 具体使用请见80.9.5更新内容 2022-9-2 80.8.5 1. 获取会议详情、编辑会议接口新增参数allowLive。 2. 会议信息通知新增参数isCreator。 3. 预约会议、编辑会议支持设置“来宾在主持人之前加入会议”,并可设置提前入会时间(allowGuestStartConf、allowGuestStartConfTime)。 具体使用请见80.8.5更新内容 2022-7-30 80.7.5 1. 新增显示设置界面接口showSettingWindow。 2. 会议信息通知OnConfInfoNotify新增参数isOtherCorpConf。 3. 与会者列表子项注入点击通知OnClickInjectParticipantItemBtnNotify新增与会者详情按钮类型HWM_CLICK_INJECT_PARTICIPANT_ITEM_BTN_PARTICIPANT_DETAIL,新增华为云会议账号参数accountId。 4. Config接口新增字段participant_detail,支持与会者头像点击注入。 具体使用请见80.7.5更新内容 2022-6-17 80.5.11 1.config接口新增字段statusBar,支持录制状态栏按钮可隐藏。 2.新增禁用提示音接口disableVoicePrompts。 具体使用请见80.5.11更新内容 2022-5-18 80.5.5 1. Mac补充exit接口。 2. Mac创建会议、预约会议、编辑会议、获取会议详情接口补充等候室开关功能。 3. 功能配置开关接口新增隐藏非视频与会者配置。 4. 会议结束通知新增服务器异常错误码。 具体使用请见80.5.5 更新内容 2022-04-16 70.16.5 首次发布 父主题: Electron SDK
  • 接口功能 该接口用于预约周期会议。注意事项:1、该接口在已登录状态下才能调用。2、该接口为异步接口,返回值只代表接口是否调用成功,实际业务处理结果在对应的回调函数中返回。 3、会议开始时间必须晚于当前时间,会议时长应大于15分钟。4、携带与会者入会的时候需要传入attendees。5、周期会议最大跨度一年,会议数量不超过50,超过则只预约前50个会议。 6、回调函数中会返回预约成功后的会议详情,详见HwmConfDetail结构体表。如果参数内只有会议id有值则获取会议详情失败。
  • 界面定制 用户可以根据需求自定义一些会控菜单。 本章节自定义菜单示例代码为SDK默认,根据自己需求增加(增加的type值不能与SDK中HWMConfCtrlType的定义重复)或者减少。 界面配置 清除界面配置 社交分享定制 底部工具栏定制 与会者列表菜单定制 会议页面顶部titlebar菜单定制 联系人UI定制 头像拦截显示 自定义会中水印 录制按钮操作定制 获取错误提示 自定义指定场景文案 自定义指定场景图标 自定义虚拟背景图片添加按钮事件 呼叫其他号码列表定制 拦截发起共享定制 设置与会者头像风格 父主题: 接口参考
  • 界面定制 用户可以根据需求自定义一些界面 界面配置 清除界面配置 底部工具栏定制 共享工具栏定制 底部工具栏更多菜单定制 共享工具栏更多菜单定制 社交分享定制 选择联系人定制 头像拦截显示 其它UI定制 自定义会中水印 自定义设置界面 联系人信息定制 录制按钮操作定制 显示设置窗口 与会者列表子项定制 显示提示信息 获取主窗口信息 获取错误提示 设置支持显示会控助手 自定义指定场景文案 呼叫其他号码列表定制 拦截发起共享定制 设置头像风格 父主题: 接口参考
  • 参数描述 表1 结构体HwmPoorNetWorkQualityInfo参数说明 参数 类型 描述 nickName char[] 与会者名称。 number char[] 号码。如果填分配给账号的sip号码(如+99111244216210249)则呼叫该账号的App;如果填PSTN号码(如18700000000),则通过VoIP网关呼叫该号码,前提是该企业已开通PSTN呼叫权限。与thirdUserId二选一,账号密码鉴权时使用。 thirdUserId char[] 第三方用户ID。与number二选一,App ID鉴权时使用。 accountId char[] 华为云会议账号 orgId char[] 企业id isLocal bool 是否本端 audioStatus HwmLowNetWorkStatusInfo 音频网络状态 videoStatus HwmLowNetWorkStatusInfo 视频网络状态 shareStatus HwmLowNetWorkStatusInfo 共享网络状态 表2 结构体HwmLowNetWorkStatusInfo参数说明 参数 类型 描述 packetLoss unsigned int 丢包 delay unsigned int 延迟 jitter unsigned int 抖动 status HwmLowNetWorkStatus 状态 表3 枚举HwmLowNetWorkStatus说明 枚举值 描述 LOW_NET_WORK_STATUS_NORMAL 网络正常 LOW_NET_WORK_STATUS_BAD 网络差 LOW_NET_WORK_STATUS_VERY_BAD 网络非常差
  • startP2PConf 接口描述 该接口用于发起立即会议。 注意事项 1. 实际业务处理结果在对应的callback回调中。 方法定义 - (void)startP2PConf:(HWMStartP2PConfParam *)param callback:(_Nonnull HWMSDKCreateConfCompleteHandler)callback; 参数描述 参数 是否必须 类型 描述 param 是 HWMStartP2PConfParam * 发起立即会议信息。 表1 HWMStartP2PConfParam 说明 参数 是否必须 类型 描述 calleeInfo 是 HWMCalleeInfo * 被叫信息。 callerInfo 是 HWMCallerInfo * 主叫信息。 mediaType 是 HWMMediaType 媒体类型。 isGuestJoinConfWithoutPwd 是 BOOL 是否来宾免密码入会。默认NO。 confAllowJoinUser 是 HWMJoinConfRestrictionType 允许入会的用户类型。默认HWMJoinConfRestrictionAll。 表2 HWMCallerInfo 说明 参数 是否必须 类型 描述 nickName 否 NSString * 主叫姓名。 表3 HWMCalleeInfo 说明 参数 是否必须 类型 描述 nickName 否 NSString * 被叫姓名。 number 是 NSString * 被叫号码。如果填分配给账号的sip号码(如+99111244216210249)则呼叫该账号的App;如果填PSTN号码(如18700000000),则通过VoIP网关呼叫该号码,前提是该企业已开通PSTN呼叫权限。与thirdUserId二选一,账号密码鉴权时使用。 thirdUserId 是 NSString * 第三方用户ID。与number二选一,App ID鉴权时使用。 type 是 HWMConfAttendeeType 用户类型。默认 HWMConfAttendeeTypeNormal。 orgId 否 NSString * 企业ID。 表4 枚举HWMConfAttendeeType说明 枚举值 描述 HWMConfAttendeeTypeNormal 会议软终端用户。 HWMConfAttendeeTypeMobile 用户手机号码。 返回值 无 示例代码 - (void)startP2PConf { // 设置被叫信息 HWMCalleeInfo *calleeInfo = [[HWMCalleeInfo alloc] init]; calleeInfo.nickName = @"被叫姓名"; calleeInfo.number = @"123456"; calleeInfo.thirdUserId = @"123456"; // 设置主叫信息 HWMCallerInfo *callerInfo = [[HWMCallerInfo alloc] init]; callerInfo.nickName = @"主叫姓名"; HWMStartP2PConfParam *param = [[HWMStartP2PConfParam alloc] init]; // 设置媒体类型 param.mediaType = HWMMediaTypeVideo; param.calleeInfo = calleeInfo; param.callerInfo = callerInfo; // 调用SDK接口 [[HWMSdk getOpenApi] startP2PConf:param callback:^(NSError * _Nullable error, HWMCreateConfResult * _Nullable result) { if (error) { [UIUtil showMessageWithError:error]; } else { [UIUtil showMessage:[NSString stringWithFormat:@"会议ID:%@, isP2PConf:%@", result.confId, result.isP2PConf?@"YES":@"NO"]]; } }]; }
  • 110.3.9更新内容 1.支持企业池通讯录查询及邀请入会能力,与会者HwmConfAttendee、被叫信息HwmCalleeInfo、qos弱网提示信息HwmPoorNetWorkQualityInfo、邀请与会者结果信息HwmAddAttendeeResult、与会者列表子项信息HwmParticipantItemInfo新增字段orgId企业id,详见表1,表3,表1,表2,表1 2.新增接口SetAvatarStyle设置头像风格,详见设置头像风格 父主题: 版本更新内容
  • 110.3.9更新内容 1. 支持企业池通讯录查询及邀请入会能力,新增企业ID字段,具体请见HWMAttendeeInfo参数说明、HWMUISDKCalleeInfoModel参数说明、HWMUISDKContactInfoModel参数说明、HWMSDKPoorNetWorkQualityInfoModel参数说明、HWMSDKAddAttendeeInfoModel参数说明。 2. 新增设置头像风格接口setAvatarStyle,具体请见设置头像风格。 父主题: 版本更新内容
  • 110.3.9更新内容 新增设置与会者头像风格接口 setParticipantAvatarStyle,详见设置与会者头像风格。 新增企业ID字段,详见HWMConfQueryAvatarModel参数说明、HWMCreateConfMember参数说明、HWMContactSelectedModel 说明、HWMCalleeInfo 说明、HWMAttendeeInfo 参数说明。 父主题: 版本更新内容
  • 调用API示例 在工程中引入sdk(signer.go)。 import "apig-sdk/go/core" 生成一个新的Signer,输入AppKey和AppSecret。 本示例以AK和SK保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。以Linux系统为例在本地将已获取的AK/SK设置为环境变量。 打开终端,输入以下命令打开环境变量配置文件。 vi ~/.bashrc 设置环境变量,保存文件并退出编辑器。 export HUAWEICLOUD_SDK_AK="已获取AK值" export HUAWEICLOUD_SDK_SK="已获取SK值" 输入以下命令使配置文件生效。 source ~/.bashrc 生成一个新的Signer,填入已设置的环境变量。 s := core.Signer{ // Directly writing AK/SK in code is risky. For security, encrypt your AK/SK and store them in the configuration file or environment variables. // In this example, the AK/SK are stored in environment variables for identity authentication. Before running this example, set environment variables HUAWEICLOUD_SDK_AK and HUAWEICLOUD_SDK_SK. Key: os.Getenv("HUAWEICLOUD_SDK_AK"), Secret: os.Getenv("HUAWEICLOUD_SDK_SK"), } 生成一个新的Request,指定域名、方法名、请求url、query和body。 r, _ := http.NewRequest("POST", "http://c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com/api?a=1&b=2", ioutil.NopCloser(bytes.NewBuffer([]byte("foo=bar")))) 给请求添加x-stage头,内容为环境名。如有需要,添加需要签名的其他头域。 r.Header.Add("x-stage", "RELEASE") 进行签名,执行此函数会在请求中添加用于签名的X-Sdk-Date头和Authorization头。 s.Sign(r) 访问API,查看访问结果。 resp, err := http.DefaultClient.Do(r) body, err := ioutil.ReadAll(resp.Body)
  • 获取SDK 请在API网关控制台选择“帮助中心”,在“SDK使用指引”页签中下载对应语言所使用SDK。 或直接下载SDK的最新版本,获取“ApiGateway-cpp-sdk.zip”压缩包,解压后目录结构如下: 名称 说明 hasher.cpp SDK代码 hasher.h header.h RequestParams.cpp RequestParams.h signer.cpp signer.h Makefile Makefile文件 main.cpp 示例代码
  • 准备环境 已在API网关控制台创建签名密钥,并绑定API,具体请参见创建并使用签名密钥。 已获取签名密钥的Key和Secret,请参见签名前准备获取。 请在API网关控制台选择“帮助中心”,在“SDK使用指引”页签中下载对应语言所使用SDK。或直接下载SDK的最新版本。 已安装Python安装包2.7.9或3.X版本,如果未安装,请至Python官方下载页面下载。 已安装IntelliJ IDEA 2018.3.5或以上版本,如果未安装,请至IntelliJ IDEA官方网站下载。 已在IntelliJ IDEA中安装Python插件,如果未安装,请按照图1所示安装。 图1 安装Python插件
  • 调用API示例 把API信息替换到HttpClientDemo.java中对应位置。 本示例以AK和SK保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。以Linux系统为例在本地将已获取的AK/SK设置为环境变量。 打开终端,输入以下命令打开环境变量配置文件。 vi ~/.bashrc 设置环境变量,保存文件并退出编辑器。 export HUAWEICLOUD_SDK_AK="已获取AK值" export HUAWEICLOUD_SDK_SK="已获取SK值" 输入以下命令使配置文件生效。 source ~/.bashrc 把API信息和已设置的环境变量替换到HttpClientDemo.java中对应位置。 HttpClientDemo中引用以下类,可在“获取SDK”包中的“src”文件下查看: Constant:SDK包中使用的常量类。 SSLCipherSuiteUtil:tls认证配置参数的工具类,比如配置客户端不校验证书。 UnsupportProtocolException:异常处理类。 public class HttpClientDemo { private static final Logger LOG GER = LoggerFactory.getLogger(HttpClientDemo.class); public static void main(String[] args) throws Exception { // Create a new request. Request httpClientRequest = new Request(); try { // Set the request parameters. // AppKey, AppSecrect, Method and Url are required parameters. // Directly writing AK/SK in code is risky. For security, encrypt your AK/SK and store them in the configuration file or environment variables. // In this example, the AK/SK are stored in environment variables for identity authentication. // Before running this example, set environment variables HUAWEICLOUD_SDK_AK and HUAWEICLOUD_SDK_SK. httpClientRequest.setKey(System.getenv("HUAWEICLOUD_SDK_AK")); httpClientRequest.setSecret(System.getenv("HUAWEICLOUD_SDK_SK")); httpClientRequest.setMethod("POST"); // Set a request URL in the format of https://{Endpoint}/{URI}. httpClientRequest.setUrl("put your request url here"); httpClientRequest.addHeader("Content-Type", "text/plain"); // Set a body for http request. httpClientRequest.setBody("put your request body here"); } catch (Exception e) { LOGGER.error(e.getMessage()); return; } CloseableHttpClient client = null; try { // Sign the request. HttpRequestBase signedRequest = Client.sign(httpClientRequest, Constant.SIGNATURE_ALGORITHM_SDK_HMAC_SHA256); if (Constant.DO_VERIFY) { // creat httpClient and verify ssl certificate HostName.setUrlHostName(httpClientRequest.getHost()); client = (CloseableHttpClient) SSLCipherSuiteUtil.createHttpClientWithVerify(Constant.INTERNATIONAL_PROTOCOL); } else { // creat httpClient and do not verify ssl certificate client = (CloseableHttpClient) SSLCipherSuiteUtil.createHttpClient(Constant.INTERNATIONAL_PROTOCOL); } HttpResponse response = client.execute(signedRequest); // Print the body of the response. HttpEntity resEntity = response.getEntity(); if (resEntity != null) { LOGGER.info("Processing Body with name: {} and value: {}", System.getProperty("line.separator"), EntityUtils.toString(resEntity, "UTF-8")); } } catch (Exception e) { LOGGER.error(e.getMessage()); } finally { if (client != null) { client.close(); } } } } 运行HttpClientDemo.java,对请求进行签名、访问API并打印结果。 示例结果如下: [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Print the authorization: [Authorization: SDK-HMAC-SHA256 Access=3afe***ba29, SignedHeaders=host;x-sdk-date, Signature=26b2***dbf6] [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Print the status line of the response: HTTP/1.1 200 OK [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: Date and value: Fri, 26 Aug 2022 08:58:51 GMT [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: Content-Type and value: application/json [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: Transfer-Encoding and value: chunked [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: Connection and value: keep-alive [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: Server and value: api-gateway [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: X-Request-Id and value: 10955c5346b9512d23f3fd4c1bf2d181 [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Body with name: and value: {"200": "sdk success"} 显示{"200": "sdk success"},表示签名成功,API成功请求到后端。 如果改变AK或SK的值,API网关将返回的错误信息error_msg。
  • 获取SDK 请在API网关控制台选择“帮助中心”,在“SDK使用指引”页签中下载对应语言所使用SDK。 或直接下载SDK的最新版本,获取“ApiGateway-java-sdk.zip”压缩包,解压后目录结构如下: 名称 说明 libs\java-sdk-core-x.x.x.jar 签名SDK pom.xml 构建Maven工程所需,定义其他依赖包 changelog 变更日志 src 验证签名SDK的demo代码: WebSocketDemo.java OkHttpDemo.java、 LargeFileUploadDemo.java HttpClientDemo.java 引用类: Constant.java SSLCipherSuiteUtil.java UnsupportProtocolException.java
  • 调用API示例 获取Token ,并设置成环境变量,Token用于后续调用其他接口鉴权。 获取用户Token,请求内容示例如下: curl -X POST https://{iam_endpoint}/v3/auth/tokens -H 'content-type: application/json' -d '{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "{user_name}", "domain": { "name": "{user_name}" }, "password": "{password}" } } }, "scope": { "project": { "id": "{project_id}" } } } }' -vk 上述命令中,部分参数请参见以下说明进行修改,具体请参考《 统一身份认证 服务API参考》的获取用户Token接口: {iam_endpoint}请参见地区和终端节点获取。 {user_name}和{password}分别替换为连接 IAM 服务器的用户名和密码。 {project_id}为项目ID。在管理控制台,将鼠标移至用户名,在下拉列表中单击“我的凭证”,查看“项目ID”。 请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值,如下图所示: 图1 从返回消息的Header中获取X-Subject-Token 使用如下命令将token设置为环境变量,方便后续事项。 export Token={X-Subject-Token} X-Subject-Token即为1.a获取到的token,命令示例如下: export Token=MIIDkg******BZQMEAgEwg 调用API,请参考认证前准备获取域名、请求方法和URL,并在请求消息头中增加“X-Auth-Token”,“X-Auth-Token”的取值为1中获取的Token。参数请根据实际情况填写。 curl -X 请求方法 域名+URL -H "x-auth-token: $Token" -vk
  • 步骤2:创建待签字符串 对HTTP请求进行规范并取得请求的哈希值后,将其与签名算法、签名时间一起组成待签名字符串。 StringToSign = Algorithm + \n + RequestDateTime + \n + HashedCanonicalRequest 伪代码中参数说明如下。 Algorithm 签名算法。对于SHA 256,算法为SDK-HMAC-SHA256。 RequestDateTime 请求时间戳。与请求消息头X-Sdk-Date的值相同,格式为YYYYMMDDTHHMMSSZ。 HashedCanonicalRequest 经过哈希处理的规范请求。 上述例子得到的待签字符串为: SDK-HMAC-SHA256 20191111T093443Z af71c5a7ef45310b8dc05ab15f7da50189ffa81a95cc284379ebaa5eb61155c0
  • 步骤3:计算签名 将APP secret和创建的待签字符串作为加密哈希函数的输入,计算签名,将二进制值转换为十六进制表示形式。 伪代码如下: signature = HexEncode(HMAC(APP secret, string to sign)) 其中HMAC指密钥相关的哈希运算,HexEncode指转十六进制。伪代码中参数说明如表1所示。 表1 参数说明 参数名称 参数解释 APP secret 签名密钥 string to sign 创建的待签字符串 假设APP secret为FWTh***XMD8,则计算得到的signature为: 5ac0b7c4035112cd840397e12d10cd1ca065328d03a6242d5cbfbbd63659c011
  • 步骤4:添加签名信息到请求头 在计算签名后,将它添加到Authorization的HTTP消息头。Authorization消息头未包含在已签名消息头中,主要用于身份验证。 伪代码如下: Authorization header创建伪码: Authorization: algorithm Access=APP key, SignedHeaders=SignedHeaders, Signature=signature 需要注意的是算法与Access之前没有逗号,但是SignedHeaders与Signature之前需要使用逗号隔开。 得到的签名消息头为: Authorization: SDK-HMAC-SHA256 Access=FM9RLCN************NAXISK, SignedHeaders=host;x-sdk-date, Signature=01cc37e53d***e00b15822 得到签名消息头后,将其增加到原始HTTP请求内容中,请求将被发送给API网关,由API网关完成身份认证。身份认证通过后,该请求才会发送给后端服务进行业务处理。
  • 步骤1:构造规范请求 使用APP方式进行签名与认证,首先需要规范请求内容,然后再进行签名。客户端与API网关使用相同的请求规范,可以确保同一个HTTP请求的前后端得到相同的签名结果,从而完成身份校验。 HTTP请求规范伪代码如下: CanonicalRequest = HTTPRequestMethod + '\n' + CanonicalURI + '\n' + CanonicalQueryString + '\n' + CanonicalHeaders + '\n' + SignedHeaders + '\n' + HexEncode(Hash(RequestPayload)) 通过以下示例来说明规范请求的构造步骤。 假设原始请求如下: GET https://c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com/app1?b=2&a=1 HTTP/1.1 Host: c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com X-Sdk-Date: 20191111T093443Z 构造HTTP请求方法(HTTPRequestMethod),以换行符结束。 HTTP请求方法,如GET、PUT、POST等。请求方法示例: GET 添加规范URI参数(CanonicalURI),以换行符结束。 释义: 规范URI,即请求资源路径,是URI的绝对路径部分的URI编码。 格式: 根据RFC 3986标准化URI路径,移除冗余和相对路径部分,路径中每个部分必须为URI编码。如果URI路径不以“/”结尾,则在尾部添加“/”。 举例: 示例中的URI:/app1,此时规范的URI编码为: GET /app1/ 计算签名时,URI必须以“/”结尾。发送请求时,可以不以“/”结尾。 添加规范查询字符串(CanonicalQueryString),以换行符结束。 释义: 查询字符串,即查询参数。如果没有查询参数,则为空字符串,即规范后的请求为空行。 格式: 规范查询字符串需要满足以下要求: 根据以下规则对每个参数名和值进行URI编码: 请勿对RFC 3986定义的任何非预留字符进行URI编码,这些字符包括:A-Z、a-z、0-9、-、_、.和~。 使用%XY对所有非预留字符进行百分比编码,其中X和Y为十六进制字符(0-9和A-F)。例如,空格字符必须编码为%20,扩展UTF-8字符必须采用“%XY%ZA%BC”格式。 对于每个参数,追加“URI编码的参数名称=URI编码的参数值”。如果没有参数值,则以空字符串代替,但不能省略“=”。 例如以下含有两个参数,其中第二个参数parm2的值为空。 parm1=value1&parm2= 按照字符代码以升序顺序对参数名进行排序。例如,以大写字母F开头的参数名排在以小写字母b开头的参数名之前。 以排序后的第一个参数名开始,构造规范查询字符串。 举例: 示例中包含两个可选参数:a、b GET /app1/ a=1&b=2 添加规范消息头(CanonicalHeaders),以换行符结束。 释义: 规范消息头,即请求消息头列表。包括签名请求中的所有HTTP消息头列表。消息头必须包含X-Sdk-Date,用于校验签名时间,格式为ISO8601标准的UTC时间格式:YYYYMMDDTHHMMSSZ。如果API发布到非RELEASE环境时,需要增加自定义的环境名称。 客户端须注意本地时间与时钟服务器的同步,避免请求消息头X-Sdk-Date的值出现较大误差。 API网关除了校验时间格式外,还会校验该时间值与网关收到请求的时间差,如果时间差大于15分钟,API网关将拒绝请求。 格式: CanonicalHeaders由多个请求消息头共同组成,CanonicalHeadersEntry0 + CanonicalHeadersEntry1 + ...,其中每个请求消息头(CanonicalHeadersEntry)的格式为Lowercase(HeaderName) + ':' + Trimall(HeaderValue) + '\n' Lowercase:表示将所有字符转换为小写字母的函数。 Trimall:表示删除值前后的多余空格的函数。 最后一个请求消息头也会携带一个换行符。叠加规范中CanonicalHeaders自身携带的换行符,因此会出现一个空行。 消息头名称要保持唯一性,出现多个相同消息头名称时,无法完成认证。 举例: GET /app1/ a=1&b=2 host:c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com x-sdk-date:20191111T093443Z 规范消息头需要满足以下要求: 将消息头名称转换为小写形式,并删除前导空格和尾随空格。 按照字符代码对消息头名称进行升序排序。 例如原始消息头为: Host: c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com\n Content-Type: application/json;charset=utf8\n My-header1: a b c \n X-Sdk-Date:20191111T093443Z\n My-Header2: "a b c" \n 规范消息头为: content-type:application/json;charset=utf8\n host:c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com\n my-header1:a b c\n my-header2:"a b c"\n x-sdk-date:20191111T093443Z\n 添加用于签名的消息头声明(SignedHeaders),以换行符结束。 释义: 用于签名的请求消息头列表。通过添加此消息头,向API网关告知请求中哪些消息头是签名过程的一部分,以及在验证请求时API网关可以忽略哪些消息头。X-Sdk-date必须作为已签名的消息头。 格式: SignedHeaders = Lowercase(HeaderName0) + ';' + Lowercase(HeaderName1) + ";" + ... 已签名的消息头需要满足以下要求:将已签名的消息头名称转换为小写形式,按照字符代码对消息头进行排序,并使用“;”来分隔多个消息头。 Lowercase表示将所有字符转换为小写字母。 举例: 以下表示有两个消息头参与签名:host、x-sdk-date GET /app1/ a=1&b=2 host:c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com x-sdk-date:20191111T093443Z host;x-sdk-date 基于HTTP或HTTPS请求正文中的body体(RequestPayload),使用SHA-256哈希函数创建哈希值。 释义: 请求消息体。消息体需要做两层转换:HexEncode(Hash(RequestPayload)),其中Hash表示生成消息摘要的函数,当前支持SHA-256算法。HexEncode表示以小写字母形式返回摘要的Base-16编码的函数。例如,HexEncode("m") 返回值为“6d”而不是“6D”。输入的每一个字节都表示为两个十六进制字符。 计算RequestPayload的哈希值时,对于“RequestPayload==null”的场景,直接使用空字符串""来计算。 举例: 本示例为GET方法,body体为空。经过哈希处理的body(空字符串)如下: GET /app1/ a=1&b=2 host:c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com x-sdk-date:20191111T093443Z host;x-sdk-date e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 对构造好的规范请求进行哈希处理,算法与对RequestPayload哈希处理的算法相同。经过哈希处理的规范请求必须以小写十六进制字符串形式表示。 算法伪代码:Lowercase(HexEncode(Hash.SHA256(CanonicalRequest))) 经过哈希处理的规范请求示例: af71c5a7ef45310b8dc05ab15f7da50189ffa81a95cc284379ebaa5eb61155c0
  • 准备环境 已获取签名密钥的Key和Secret,请参见签名前准备获取。 已在API网关控制台创建签名密钥,并绑定API,具体请参见创建并使用签名密钥。 在API网关控制台选择“帮助中心”,在“SDK使用指引”页签中下载对应语言所使用SDK。或直接下载SDK的最新版本。 已安装Visual Studio 2019 version 16.8.4或以上版本,如果未安装,请至Visual Studio官方网站下载。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全