- Function Overview
- Product Bulletin
- Service Overview
- Billing
- Purchase Guide
- Getting Started
-
Administrator Guide
- Before You Start
- Managing Departments
- Managing Users
- Managing External Contacts
- Managing Professional Meeting Terminals
- Managing IdeaHubs and Boards
- Managing Cloud Meeting Rooms
- Viewing Enterprise Registration Details
- Managing Meetings
- Other Settings
- Monitoring Hard Terminals
- Viewing Operation Logs
- Configuring the Enterprise Privacy Statement
-
Videoconferencing User Guides
-
Huawei Cloud Meeting Client User Guide
-
Desktop Client
- Downloading and Logging In to the Client
- Creating a Meeting
- Joining a Meeting
- Controlling a Meeting
- Sharing Content and Annotating on the Shared Content
- Enterprise SSO Login
- Simultaneous Interpretation
- Outlook Plug-in
- Hosting a Meeting
- Leaving a Meeting
- Editing a Meeting
- Canceling a Meeting
- Projection
- Deleting an Account
- Mobile App
-
Desktop Client
- Administrator Guide Web
-
Huawei Cloud Meeting Client User Guide
-
Smart Room User Guides
- IdeaHub User Guide
- Hard Terminal User Guide
-
Third-Party Device User Guide
- Support for Third-Party Meeting Terminals in Commercial Environments
- Terminal Connection Examples and FAQs
-
Development and Integration
- Developer Guide
-
Server API Reference
- Overview
- Change History
- Login Authentication
-
Meeting Management
- Examples
-
APIs
- Creating a Meeting
- Canceling a Scheduled Meeting
- Modifying a Scheduled Meeting
- Creating a Recurring Meeting Series
- Canceling a Recurring Meeting Series
- Canceling a Recurring Meeting
- Modifying a Recurring Meeting Series
- Modifying a Recurring Meeting
- Querying the Meeting List
- Querying Meeting Details
- Querying the Region Where a Meeting Is Held
- Querying the Ongoing Meeting List
- Querying Ongoing Meeting Details
- Querying the Recording File List
- Querying Recording File Details
- Querying Download Links of Recording Files
- Deleting Recording Files in Batches
- Querying the Historical Meeting List
- Viewing Historical Meeting Details
- Querying Meeting Control Records of a Historical Meeting
- Querying Participant Records of a Historical Meeting
- Authenticating an Anonymous User
- Querying the Enterprise to Which a Meeting Belongs as an SP Administrator
- Querying SP Resource Usage as an SP Administrator
- Querying Enterprise Resource Usage as an Enterprise Administrator
- Activating a Meeting
-
Meeting Control
- Examples
-
APIs
- Obtaining a Meeting Control Token
- Querying Meeting Details in Real Time
- Inviting Participants
- Disconnecting Participants
- Removing Participants
- Applying for or Relinquishing the Host Role
- Applying to Be a Co-Host
- Muting or Unmuting Participants
- Muting or Unmuting All Participants
- Raising or Lowering Hands
- Raising Hands
- Locking or Unlocking a Meeting
- Extending a Meeting
- Ending a Meeting
- Setting Continuous Presence
- Customizing Continuous Presence
- Switching the Video Display Mode
- Viewing Participants as the Host
- Starting and Stopping Recording a Meeting
- Starting or Stopping Live Broadcasting a Meeting
- Renaming a Participant
- Giving Floor to a Participant
- Broadcasting a Participant
- Unmuting a Participant by Themselves
- Focusing a Site
- Locking or Unlocking the Video Source of a Participant
- Inviting a Participant Using a Meeting ID and Password
- Modifying Settings During a Meeting
- Obtaining a Token for Establishing a WebSocket Connection
- Inviting a Participant to Share a Screen
- Inviting a Participant to Enable or Disable the Camera
- Canceling Broadcast
- Admitting Waiting Room Members to a Meeting
- Moving a Participant to the Waiting Room
- Allowing Local Recording
- Querying a Continuous Presence Layout
- Saving a Continuous Presence Layout
- Deleting a Continuous Presence Layout
-
Meeting Event Push
-
Meeting-Level Event Push
- Overview
- Example
-
APIs
- Establishing a WebSocket Connection
- Subscribing to Messages
- Pushing Basic Meeting Information
- Pushing Meeting Status Information
- Pushing Online Participant Information
- Pushing Information of Participants Invited During Meeting Scheduling
- Pushing Speaker Status Information
- Pushing Meeting Media Quality
- Pushing Invitation Results
- Pushing Live Captions
- Using WebSocket Heartbeats
- Enterprise-Level Meeting Event Push
- Configuring Enterprise-Level Meeting Event Push
-
Meeting-Level Event Push
-
Enterprise Management
- Examples
-
APIs
- Querying Enterprise Registration Details as an Enterprise Administrator
- Modifying Enterprise Registration Details as an Enterprise Administrator
- Querying Enterprise Resources and Service Permissions as an Enterprise Administrator
- Querying Enterprise Resource Orders by Page
- Creating an Enterprise as an SP Administrator
- Deleting an Enterprise as an SP Administrator
- Querying Enterprise Details as an SP Administrator
- Modifying an Enterprise as an SP Administrator
- Querying Enterprises in Pages as an SP Administrator
- Department Management
-
User Management
- Examples
-
APIs
- Adding a User
- Modifying a User
- Querying User Details
- Querying User Details in Batches
- Deleting Users in Batches
- Querying Users in Pages
- Modifying the User Status in Batches
- Querying Personal Details as a User
- Modifying Personal Details as a User
- Changing the Mobile Number or Email Address
- Inviting a User
- Enterprise Administrator Management
-
Hard Terminal Management
- Managing Professional Meeting Terminals
-
Managing Activation Codes
- Generating an Activation Code as an Enterprise Administrator
- Deleting Activation Codes as an Enterprise Administrator
- Resetting an Activation Code as an Enterprise Administrator
- Querying Activation Codes by Page as an Enterprise Administrator
- Resetting an Activation Code Using the SN as an Enterprise Administrator
-
Cloud Meeting Room Management
- Querying Cloud Meeting Rooms by Page as an Enterprise Administrator
- Querying Cloud Meeting Rooms by Page and the Personal Meeting ID as a Common User
- Modifying Cloud Meeting Room and Personal Meeting ID Information
- Deleting a Cloud Meeting Room
- Allocating a Cloud Meeting Room
- Reclaiming a Cloud Meeting Room
- User Password Management
- Corporate Directory Query
-
Enterprise Resource Management
- Allocating Enterprise Resources as an SP Administrator
- Deleting Enterprise Resources as an SP Administrator
- Modifying Enterprise Resources as an SP Administrator
- Querying Enterprise Resources by Page as an SP Administrator
- Querying Enterprise Resource Operation Records by Page as an SP Administrator
- Querying Resource Information as an SP Administrator
- Meeting Minutes
- Bulletin Board Management
- Error Codes
- Appendixes
- FAQs
-
Client SDK Reference
- SDK Overview
- Demos
- Building the Demo in One Minute
- Downloading SDKs
- SDK Maintenance Cycle
-
Android SDK
- Introduction
- Getting Started
- Typical Scenarios
-
API Reference
-
Basic Settings
- Initializing the SDK Synchronously
- Initializing the SDK Asynchronously
- Configuring an Access Site
- Customizing the Panel Used to Share a Meeting
- Customizing a Log Storage Path
- Enabling or Disabling Chat for a Meeting
- Enabling or Disabling HD Video First for a Video Meeting
- Enabling or Disabling the Camera and Microphone When Joining a Meeting
- Customizing the Ringing and Vibration for Incoming Meetings
- Hiding the External Label
- Disabling Prompt Tones
- Setting the Network Mode
- Enabling a Function
- Setting the Language
- Setting Guaranteed IP Addresses for Meeting Control
-
UI Customization
- Customizing the Bottom Menu Bar
- Customizing a Menu on the Participants Screen
- Customizing the Menu Displayed upon a Touch on the Title Bar in a Meeting
- Customizing a Screen for Adding Participants to a Meeting
- Customizing a Notification Bar in a Meeting
- Customizing the Profile Picture
- Customizing a Watermark for a Meeting
- Customizing the Status Bar Menu
- Obtaining an Error Message
- Android Menu Functions
- Customizing the Text for a Specific Scenario
- Customizing the Icon for a Specific Scenario
- Customizing the Button of Adding a Virtual Background Image
- Account Operations
-
Meeting Management
- Scheduling a Meeting
- Editing a Meeting
- Canceling a Meeting
- Obtaining the Meeting List
- Obtaining Meeting Details
- Obtaining the Cloud Meeting Room List
- Modifying Cloud Meeting Room Information
- Scheduling a Recurring Meeting Series
- Editing a Recurring Meeting Series
- Canceling a Recurring Meeting Series
- Editing a Recurring Meeting
- Canceling a Recurring Meeting
- Meeting Control
- Meeting Information
- Audio and Video Data Streams
-
Basic Settings
- Notification Reference
- Error Code Reference
-
Version Updates
- 100.10.7 Updates
- 100.10.6 Updates
- 100.10.5 Updates
- 100.9.7 Updates
- 100.9.5 Updates
- 100.7.13 Updates
- 100.7.8 Updates
- 100.7.6 Updates
- 100.7.5 Updates
- 100.5.5 Updates
- 100.3.6 Updates
- 90.12.7 Updates
- 90.12.5 Updates
- 90.10.8 Updates
- 90.9.8 Updates
- 90.9.7 Updates
- 90.9.6 Updates
- 90.9.5 Updates
- 90.7.5 Updates
- 90.6.5 Updates
- 80.15.21 Updates
- 80.15.5 Updates
- 80.13.6 Updates
- 80.13.5 Updates
- 80.12.6 Updates
- 80.12.5 Updates
- 80.10.6 Updates
- 80.10.5 Updates
- 80.9.5 Updates
- 80.8.5 Updates
- 80.7.5 Updates
- 80.5.11 Updates
- 80.5.5 Updates
- 70.16.5 Updates
- 70.14.5 Updates
- 70.13.5 Updates
- 70.12.6 Updates
- 70.12.4 Updates
- 70.11.5 Updates
- 70.10.5 Updates
- 70.9.5 Updates
- 70.8.6 Updates
- 70.8.5 Updates
- 70.7.5 Updates
- 70.6.5 Updates
- 70.5.8 Updates
- 70.4.5 Updates
- 70.3.5 Updates
- 60.15.6 Updates
- 60.13.2 Updates
- 60.12.5 Updates
- 60.11.1 Updates
- 60.10.5 Updates
- 60.8.1 Updates
- 60.7.1 Updates
- Change History
-
iOS SDK
- Introduction
- Getting Started
- Typical Scenarios
-
API Reference
-
Basic Settings
- Initializing the SDK
- Setting the Language
- Setting a Log Path
- Setting the Incoming Call Notification Mode
- Enabling or Disabling the Camera and Microphone in a Meeting
- Enabling a Function
- Setting the Network Mode
- Disabling Prompt Tones
- Setting Guaranteed IP Addresses for Meeting Control
- Setting a Bundle ID of the Screen Sharing Extension
- Account Operations
-
UI Customization
- Configuring the UI
- Clearing UI Configurations
- Customizing Social Sharing
- Customizing the Bottom Toolbar
- Customizing a Menu on the Participants Screen
- Customizing the Menu That Appears in Response to Touches on the Title Bar of the Meeting Page
- Customizing a Contact Selection UI
- Customizing the Profile Picture Display
- Customizing a Watermark for a Meeting
- Customizing the Recording Button
- Obtaining an Error Message
- Customizing the Text for a Specific Scenario
- Customizing the Icon for a Specific Scenario
- Customizing the Button of Adding a Virtual Background Image
- Meeting Control
-
Meeting Management
- Scheduling a Meeting
- Editing a Meeting
- Obtaining the Meeting List
- Obtaining Meeting Details
- Canceling a Meeting
- Obtaining the Cloud Meeting Room List
- Modifying Cloud Meeting Room Information
- Scheduling a Recurring Meeting Series
- Editing a Recurring Meeting Series
- Canceling a Recurring Meeting Series
- Editing a Recurring Meeting
- Canceling a Recurring Meeting
- Meeting Information
-
Basic Settings
- Notification Reference
- Error Code Reference
-
Version Updates
- 100.10.7 Updates
- 100.10.6 Updates
- 100.10.5 Updates
- 100.9.7 Updates
- 100.9.5 Updates
- 100.7.13 Updates
- 100.7.8 Updates
- 100.7.6 Updates
- 100.7.5 Updates
- 100.5.5 Updates
- 100.3.6 Updates
- 90.12.7 Updates
- 90.12.5 Updates
- 90.10.8 Updates
- 90.9.6 Updates
- 90.9.5 Updates
- 90.7.5 Updates
- 90.6.5 Updates
- 80.15.21 Updates
- 80.15.6 Updates
- 80.15.5 Updates
- 80.13.8 Updates
- 80.13.6 Updates
- 80.13.5 Updates
- 80.12.6 Updates
- 80.12.5 Updates
- 80.10.5 Updates
- 80.9.5 Updates
- 80.8.5 Updates
- 80.7.5 Updates
- 80.5.11 Updates
- 80.5.5 Updates
- 70.16.5 Updates
- 70.14.5 Updates
- 70.13.5 Updates
- 70.12.6 Updates
- 70.12.4 Updates
- 70.11.5 Updates
- 70.10.5 Updates
- 70.9.5 Updates
- 70.8.6 Updates
- 70.8.5 Updates
- 70.7.5 Updates
- 70.6.5 Updates
- 70.5.8 Updates
- 70.4.5 Updates
- 70.3.5 Updates
- 60.15.5 Updates
- 60.13.2 Updates
- 60.12.5 Updates
- 60.11.6 Updates
- 60.10.5 Updates
- 60.8.1 Updates
- 60.7.1 Updates
- 90.10.8 Updates
- Change History
-
Windows SDK
- Introduction
- Getting Started
-
Typical Scenarios
- API Call in Typical Scenarios
- Scenario 1: Initialization
- Scenario 2: Login
- Scenario 3: Scheduling a Meeting
- Scenario 4: Editing a Meeting
- Scenario 5: Canceling a Meeting
- Scenario 6: Creating a Meeting
- Scenario 7: Joining a Meeting
- Scenario 8: Joining a Meeting by Clicking a Link in an Email
- Scenario 9: Adding Participants
- Scenario 10: Customizing the Invite Button in a Meeting
- Scenario 11: Logout
- Scenario 12: Exit
-
API Reference
-
Basic Settings
- Initializing the SDK
- Exiting the SDK
- Setting the Language
- Enabling a Function
- Setting the Path for Saving User Files
- Obtaining the Path for Saving User Files
- Setting the Network Mode
- Disabling Prompt Tones
- Setting the Path for Saving Logs
- Setting Guaranteed IP Addresses for Meeting Control
- Setting Login Server Information
- Setting Proxy Information
- Setting Certificate Verification Information
- Account Operations
-
UI Customization
- Configuring the UI
- Customizing Meeting Control Buttons
- Clearing UI Configurations
- Updating Custom Button Configurations
- Customizing a Watermark for a Meeting
- Customizing the Settings Screen
- Displaying the Settings Window
- Displaying a Toast Message
- Obtaining Information About the Main Window
- Obtaining an Error Message
- Making Windows Transparent During Screen Sharing
- Setting Whether to Automatically Hide the Meeting Control Bar
- Customizing the Text for a Specific Scenario
- Customizing the Icon for a Specific Scenario
-
Meeting Control
- Creating a Meeting
- Joining a Meeting
- Joining a Meeting Using a Random Code
- Setting the Participant Name
- Inviting a Participant
- Starting Sharing
- Ending Sharing
- Configuring Automatic Answering for Incoming Calls
- Displaying the Main Meeting Window
- Setting a Sharing Policy
- Setting Audio Sharing
- Controlling Audio and Video Devices
- Setting the Sharing Permission
- Leaving a Meeting
- Ending a Meeting
- Starting an Instant Meeting
- Starting Projection
-
Meeting Management
- Obtaining the Cloud Meeting Room List
- Scheduling a Meeting
- Editing a Meeting
- Canceling a Meeting
- Obtaining Meeting Details
- Modifying Cloud Meeting Room Information
- Scheduling a Recurring Meeting Series
- Editing a Recurring Meeting Series
- Canceling a Recurring Meeting Series
- Editing a Recurring Meeting
- Canceling a Recurring Meeting
- Obtaining Meeting Information
- Audio and Video Data Streams
-
Basic Settings
-
Notification Reference
- Basic Configuration Change Notification
- Account Status Change Notification
- Customized UI Event Notification
-
Meeting Status Change Notification
- Incoming Call Notification
- Meeting Status Notification
- Meeting Details Notification
- Meeting Information Change Notification
- Meeting List Notification
- Notifications for Changes on the Status of Sharing Data
- Notifications for Changes on the Status of Receiving Shared Data
- Obtaining Remote Control Permission Notification
- Granting the Remote Control Permission to Others
- Notifications for Sharing Lock Status Changes
- Meeting End Notification
- Poor Connection Notification
- Notification of Instant Meeting Records
- Notification of Participant Addition Results
- Audio and Video Device Status Notification
- Error Code Reference
-
Version Updates
- 100.10.7 Updates
- 100.10.6 Updates
- 100.10.5 Updates
- 100.9.7 Updates
- 100.9.5 Updates
- 100.7.13 Updates
- 100.7.8 Updates
- 100.7.6 Updates
- 100.7.5 Updates
- 100.5.5 Updates
- 100.3.7 Updates
- 100.3.6 Updates
- 90.12.7 Updates
- 90.12.5 Updates
- 90.9.5 Updates
- 90.7.6 Updates
- 90.7.5 Updates
- 90.6.5 Updates
- 80.15.21 Updates
- 80.15.5 Updates
- 80.13.6 Updates
- 80.13.5 Updates
- 80.12.7 Updates
- 80.12.6 Updates
- 80.12.5 Updates
- 80.10.5 Updates
- 80.9.5 Updates
- 80.8.5 Updates
- 80.7.5 Updates
- 80.5.11 Updates
- 80.5.5 Updates
- 70.16.5 Updates
- 70.14.5 Updates
- 70.13.5 Updates
- 70.12.6 Updates
- 70.12.4 Updates
- 70.11.5 Updates
- 70.10.5 Updates
- 70.9.5 Updates
- 70.8.6 Updates
- 70.8.5 Updates
- 70.7.5 Updates
- 70.6.5 Updates
- 70.5.8 Updates
- 70.4.5 Updates
- 70.3.5 Updates
- 60.15.5 Updates
- 60.13.2 Updates
- 60.12.5 Updates
- 60.11.6 Updates
- 60.10.5 Updates
- 60.8.1 Updates
- Change History
-
macOS SDK
- Overview
- Quick Start
- Typical Scenarios
-
APIs
-
Basic Settings
- Initializing the SDK
- Setting a Language
- Enabling or Disabling the Camera and Microphone in a Meeting
- Customizing a Local Recording Path
- Enabling a Function
- Setting the Network Mode
- Disabling Prompt Tones
- Setting a Log Path
- Setting Guaranteed IP Addresses for Meeting Control
- Setting Login Server Information
- Setting Certificate Verification Information
- Account Operations
-
UI Customization
- Configuring the UI
- Clearing UI Configurations
- Customizing the Bottom Toolbar
- Customizing the Sharing Toolbar
- Customizing the More Menu on the Bottom Toolbar
- Customizing the More Menu on the Sharing Toolbar
- Customizing the Social Sharing Window
- Customizing the Contact Selection Window
- Customizing the Profile Picture
- Customizing Other UIs
- Customizing a Watermark for a Meeting
- Customizing the Settings Page
- Customizing Contact Information
- Customizing the Recording Button
- Displaying the Settings Window
- Customizing Subitems in the Participant List
- Displaying a Toast Message
- Obtaining Information About the Main Window
- Obtaining an Error Message
- Displaying the Meeting Control Assistant
- Customizing the Text for a Specific Scenario
- Meeting Control
-
Meeting Management
- Scheduling a Meeting
- Editing a Meeting
- Obtaining the Meeting List
- Obtaining Meeting Details
- Canceling a Meeting
- Obtaining the Cloud Meeting Room List
- Modifying Cloud Meeting Room Information
- Scheduling a Recurring Meeting Series
- Editing a Recurring Meeting Series
- Canceling a Recurring Meeting Series
- Editing a Recurring Meeting
- Canceling a Recurring Meeting
- Conference Information
- Audio and Video Data Streams
-
Basic Settings
-
Notification Reference
- Precautions
- Account Status Change Notification
- Basic Configuration Change Notification
- Customized UI Event Notification
-
Meeting Status Change Notification
- Meeting Status Change Notification
- Ongoing Meeting Details Change Notification
- Notification of Ongoing Meeting Information Changes
- Notifications for Poor Network Connection
- Notification of Incoming Meeting Call Status Changes
- Notification of Instant Meeting Records
- Meeting End Notification
- Notification of Participant Addition Results
- Service Message Notification
- Incoming Call Answering Policy Configuration
- Error Code Reference
-
Version Updates
- 100.10.7 Updates
- 100.10.6 Updates
- 100.10.5 Updates
- 100.9.7 Updates
- 100.9.5 Updates
- 100.7.13 Updates
- 100.7.8 Updates
- 100.7.6 Updates
- 100.7.5 Updates
- 100.5.5 Updates
- 100.3.6 Updates
- 90.12.7 Updates
- 90.12.5 Updates
- 90.9.5 Updates
- 90.7.5 Updates
- 90.6.5 Updates
- 80.15.21 Updates
- 80.15.5 Updates
- 80.13.6 Updates
- 80.13.5 Updates
- 80.12.7 Updates
- 80.12.6 Updates
- 80.12.5 Updates
- 80.10.5 Updates
- 80.9.5 Updates
- 80.8.5 Updates
- 80.7.5 Updates
- 80.5.11 Updates
- 80.5.5 Updates
- 70.16.5 Updates
- 70.14.5 Updates
- 70.13.5 Updates
- 70.12.6 Updates
- 70.12.4 Updates
- 70.11.5 Updates
- 70.10.5 Updates
- 70.9.5 Updates
- 70.8.6 Updates
- 70.8.5 Updates
- 70.7.5 Updates
- 70.6.5 Updates
- 70.5.8 Updates
- 70.4.5 Updates
- 70.3.5 Updates
- 60.15.5 Updates
- 60.13.2 Updates
- 60.12.5 Updates
- Change History
-
Electron SDK
- Overview
- Getting Started
-
Typical Scenarios
- API Call in Typical Scenarios
- Scenario 1: Initialization
- Scenario 2: Login
- Scenario 3: Scheduling a Meeting
- Scenario 4: Editing a Meeting
- Scenario 5: Canceling a Meeting
- Scenario 6: Creating a Meeting
- Scenario 7: Joining a Meeting
- Scenario 8: Joining a Meeting by Clicking a Link in an Email
- Scenario 9: Adding Participants
- Scenario 10: Customizing the Invite Button in a Meeting
- Scenario 11: Logout
- Scenario 12: Exit
-
APIs
- UISDK API Management Objects
-
Login Management Objects
- Subscribing to Login Kickout Notifications
- Subscribing to Enterprise Configuration Notifications
- Subscribing to Login Error Notifications
- Subscribing to Shared Cloud Meeting Room Changes
- Account and Password Login
- App ID Login
- SSO
- Logout
- Setting the Network Mode
- Uploading a Profile Picture
- Setting Guaranteed IP Addresses for Meeting Control
- Setting Login Server Information
- Setting Proxy Information
- Setting Certificate Verification Information
-
Meeting Control Objects
- Subscribing to Meeting Status Notifications
- Subscribing to Meeting End Notifications
- Subscribing to the Callback of Instant Meeting Records
- Subscribing to Meeting Details Notifications
- Subscribing to Sharing Status Notifications
- Subscribing to Role Change Notifications
- Subscribing to Poor Network Connection Notifications
- Subscribing to Notifications of Ongoing Meeting Information Changes
- Subscribing to Participant Addition Result Notifications
- Creating a Meeting
- Starting an Instant Meeting
- Joining a Meeting
- Joining a Meeting Using a Random Code
- Adding Participants
- Leaving a Meeting
- Ending a Meeting
- Obtaining the Participant List
- Obtaining the Attendee List
- Obtaining a User Status
- Obtaining Your Role in a Meeting
- Setting the Participant Name
- Starting Projection
- Automatically Hiding the Meeting Control Bar
-
Meeting Management Objects
- Subscribing to Incoming Call Notifications
- Subscribing to Meeting List Notifications
- Scheduling a Meeting
- Canceling a Meeting
- Editing a Meeting
- Obtaining the Cloud Meeting Room List
- Obtaining Meeting Details
- Modifying Cloud Meeting Room Information
- Obtaining the Meeting List
- Scheduling a Recurring Meeting Series
- Editing a Recurring Meeting Series
- Editing a Recurring Meeting
- Canceling a Recurring Meeting Series
- Canceling a Recurring Meeting
-
Common Configuration Management Objects
- Subscribing to Notifications of Reporting Audio Stream Frame Data
- Subscribing to Notifications of User Data Path Changes
- Enabling or Disabling Functions
- Setting the Language
- Setting the Save Path
- Obtaining the Save Path
- Enabling or Disabling Audio Streams
- Setting the Call Answer Mode
- Configuring Device Statuses After a Meeting Call Is Answered
- Obtain the Meeting PSTN Number
- Disabling Prompt Tones
- Setting the Sharing Permission
- Setting the Path for Saving Logs
- Obtaining an Error Message
- Making Windows Transparent During Screen Sharing
- Customizing the Text for a Specific Scenario
- Customizing the Icon for a Specific Scenario
-
UI Configuration Management Objects
- Subscribing to Click Injection Notifications
- Subscribing to Click Injection Notifications of Participant List Subitems
- Subscribing to Click Injection Notifications of the Call all Button
- Subscribing to Window Handle Notifications
- Subscribing to Notifications of Profile Picture Query in an External Corporate Directory
- Configuring the UI
- Customizing a Watermark for a Meeting
- Obtaining the Window Handle List
- Displaying the Meeting Window
- Configuring a Profile Picture
- Customizing the Meeting Window Icon on the Taskbar
- Displaying the Settings Window
- Displaying a Toast Message
- Obtaining Information About the Main Window
- Error Codes
- Remarks
-
Version Updates
- 100.10.7 Updates
- 100.10.6 Updates
- 100.10.5 Updates
- 100.9.7 Updates
- 100.9.5 Updates
- 100.7.13 Updates
- 100.7.8 Updates
- 100.7.6 Updates
- 100.7.5 Updates
- 100.5.5 Updates
- 100.3.7 Updates
- 100.3.6 Updates
- 90.12.7 Updates
- 90.12.5 Updates
- 90.10.8 Updates
- 90.10.5 Updates
- 90.9.5 Updates
- 90.7.5 Updates
- 90.6.5 Updates
- 80.15.21 Updates
- 80.15.5 Updates
- 80.13.6 Updates
- 80.13.5 Updates
- 80.12.7 Updates
- 80.12.6 Updates
- 80.12.5 Updates
- 80.10.5 Updates
- 80.9.5 Updates
- 80.8.5 Updates
- 80.7.5 Updates
- 80.5.11 Updates
- 80.5.5 Updates
- Change History
- Known Security Vulnerabilities of SDKs
-
FAQs
- Huawei Cloud Meeting Resource Types
- How Do I Collect SDK Logs?
-
Android SDK
- How Do I Configure 64-bit Libraries?
- What Do I Do If a Route Redirection Error Occurs After I Use a Third-Party Security Software?
- What Should I Do If the SDK Prompts a Message Indicating that It Cannot Switch Between Chinese and English?
- What Should I Do If SDK Initialization Fails and No Callback or Message Is Displayed When the Meeting Creation or Joining API Is Called
- iOS SDK
- Windows SDK
-
Electron SDK
- What Should I Do If the Message "electron failed to install correctly" Is Displayed When I Start the Electron Demo?
- What Should I Do If the Error Message "permission denied" Is Displayed When I Install an Environment on macOS?
- What Should I Do If the Error Message "no template named'remove_cv_t\" Is Displayed When I Compile a .node File on macOS?
- What Should I Do If the Error Message "Could not find any Python installation to use" Is Displayed When I Compile a .node File on Windows?
- What Should I Do If the Error Message "Could not find any Visual Studio installation to use" Is Displayed When I Compile a .node File on Windows?
- What Should I Do If an Error Message Indicating that the Arm64 Architecture Is Required Is Displayed When I Run the Electron SDK on My MacBook?
- Why Does My Application Crash When I Join a Meeting After Integrating the Electron SDK with macOS and Packaging My Application?
- What Should I Do When the Electron SDK Fails to Be Run on Windows and the Message "HwmUisdk.node is not a valid Win32 application" Is Displayed?
- What Should I Do When the Electron SDK Fails to Be Run on Windows and the Message "The specified module could not be found" Is Displayed?
- Terms
-
Terminal Scheme Application Intergration
- Overview
- Android App Integration
- iOS App Integration
- Windows Client Integration
- macOS Client Integration
- FAQ
-
Best Practices
- Solution Overview
- Resource Planning
- Operation Process
- Purchasing Meeting Resources
- Configuring the Enterprise Architecture
- Configuring Meeting Resources
- Configuring Meeting Room Devices and Clients
- Using Meeting Functions (Only on Clients)
- Using Meeting Functions (in Meeting Rooms and on Clients)
- Using Meeting Functions (Only in Meeting Rooms)
- Change History
-
FAQs
-
Product Specification Problems
- What Is the Bandwidth Required for a Video Meeting?
- Which OSs Do Huawei Cloud Meeting Clients Support?
- Which Huawei Hard Terminals Are Supported by Huawei Cloud Meeting?
- Can Non-Huawei Hard Terminals Be Connected to Huawei Cloud Meeting?
- What Configurations Are Recommended for Running Huawei Cloud Meeting on a PC?
- What Are the Requirements for OSs and Browsers?
- Can International Site Users Join Video Meetings Held in the Chinese Mainland Site?
- Can I Use Huawei Cloud Meeting to Have Meetings with Members in Other Enterprises?
- Can I Use the Existing Corporate Directory of My Enterprise in Huawei Cloud Meeting?
- What Is the Best Video Quality Supported by Huawei Cloud Meeting?
- How Many Feeds Can Be Displayed on a Screen in the Gallery View on the Huawei Cloud Meeting Desktop Client?
- Which Versions of Hard Terminals Are Recommended?
- Can Huawei Cloud Meeting Support Connect to Third-Party Meeting Terminal Management Platforms?
- How Long Are Meeting Records Kept on the Huawei Cloud Meeting Management Platform?
- Which Hard Terminals Can Cloud Meeting Rooms Be Allocated To?
- How Does Huawei Cloud Meeting Ensure Security?
- How Does Huawei Cloud Meeting Ensure Reliability?
-
Resource Subscription Problems
- What Meeting Resources Are Required for Connecting Huawei Hard Terminal to Huawei Cloud Meeting?
- What Hard Terminals Are Applicable to Huawei Small and Medium Meeting Terminal Access Accounts, Respectively?
- How Do I Renew a Meeting Package?
- How Do I Expand the Capacity of a Meeting Package?
- Can I Unsubscribe from a Meeting Package?
- What Can I Do If the Number of Meeting Users Reaches the Upper Limit When I Add a User on the Huawei Cloud Meeting Management Platform?
- How Do I Request POC Test Resources of Huawei Cloud Meeting?
-
Accounts and Password Problems
- How Do I Retrieve My Password?
- What Do I Do If My Account Is Locked?
- What Do I Do If I Forget My Meeting Account?
- What Do I Do If I Cannot Receive Emails After Resetting the Password, Retrieving the Password, or Creating a Meeting?
- Can I Retrieve the Password via Email?
- How Do I Modify My Personal Details?
- How Do I Change the Enterprise Name?
-
Meeting Operation Problems
- Is Huawei Cloud Meeting Connected with Huawei Cloud WeLink?
- What Are the Functions of a Host Password and Guest Password?
- How Do I View the Network Status of Devices in a Meeting?
- What Do the Network Quality Details on the Meeting Control Page Represent?
- What Is the Function of Locking a Meeting on the Meeting Control Page?
- Can I Join a Meeting Without Login?
- Can I Join a Meeting Using a Mobile Number or Fixed-line Number?
- How Do I Modify or Cancel a Scheduled Meeting?
- Who Is the Host When Multiple Participants Use the Host Password to Join a Meeting?
- How Do I Hold a Cross-Enterprise Meeting?
- What Are Application Scenarios of Access Numbers?
- What Can I Do If a Fixed-Line Phone Cannot Join a Meeting and a Busy Tone Is Played?
- Can the Online or Offline Status of Terminals That Have Not Joined a Meeting Be Displayed on the Meeting Control Page?
- Will a Meeting Be Interrupted If I Switch the Network Connection During the Meeting?
- How Do I Change the Meeting Topic?
- How Do I Invite Participants During a Meeting as the Host?
- Why Can't I Receive a Call on My Mobile Phone When Someone Adds Me to the Meeting?
- How Do I Change the Language of the Huawei Cloud Meeting?
-
Meeting Recording Problems
- Why Is a Message Indicating that the Video Has Been Deleted Displayed When I Open a Recording File?
- I Tried Opening the Recording File of an Ended Meeting, But Saw a Message Indicating That the File Is Being Transcoded. Why?
- What Are Bandwidth Requirements for Watching Meeting Recordings?
- Does the Number of Participants in a Meeting Affect the Size of the Recording File?
- What Is the Format of a Recording File?
- What Content is Recorded?
- If I Do Not Renew Expired Recording Storage Space, Will My Recording Files Be Automatically Deleted?
-
Client Service Usage Problems
- How Do I Do If I Fails to Log In to the Huawei Cloud Meeting Client?
- How Do I Obtain Client Logs?
- How Much Data Is Consumed by the Huawei Cloud Meeting Client in One Minute When I Am in a Meeting?
- How Do I Switch Cameras on the Client?
- How Do I Do If the Message Indicating that Setup Files Are Corrupted Is Displayed When I Install the Huawei Cloud Meeting Windows Client?
- What Can I Do If 360 Safeguard Displays a Message Indicating that an Unknown Program Is Ready to Run and Tries to Block the Program When I Install the Huawei Cloud Meeting PC Client?
- What Do I Do If the Message Indicating that Windows Defender SmartScreen Has Prevented an Unrecognized Program from Starting Is Displayed When I Install the Huawei Cloud Meeting Client on a Computer Running Windows 10?
- How Can I Set Continuous Presence on Clients?
- Can I View Participants in Turn If I Join a Meeting as the Host Using the Huawei Cloud Meeting Client?
- What Do I Do If Frame Freezing Occurs When the Network Quality Is Poor and the Issue Cannot Be Solved After the Network Recovers?
- Can the Huawei Cloud Meeting App Be Woken Up by an Incoming Meeting Call When It Is Running in the Background?
- How Do I Select a Camera on the Huawei Cloud Meeting PC Client in a Meeting?
- How Do I Quickly Locate a Network Connection Failure?
- What Do I Do If the Client Breaks Down Due to the Compatibility Issue of the Graphics Driver?
- Which Clients Support Virtual Backgrounds?
- Which Windows Devices Support Virtual Backgrounds?
- How Do I Configure SSO Login for My Enterprise?
- How Do I Enable Intelligent Video Sorting?
- How Do I Enable or Disable Video Mirroring?
- How Do I Obtain Better Audio Experience?
- What Do I Do If Huawei Cloud Meeting Cannot Be Installed on My MacBook?
- How Many Screens Can Be Displayed When I Hold a Meeting on a Tablet?
- Which Devices Can Share Device Audio?
- What Do I Do If the Message Indicating that My OS Version Is Too Early Is Displayed When I Start the PC Client?
- What Do I Do If the Message "Installation package has a problem. Continue to install it?" Is Displayed During the PC Client Upgrade?
- How Do I Grant the Microphone, Camera, and Screen Sharing Permissions to the Huawei Cloud Meeting Web Client?
- How Do I Check Audio Devices on the Huawei Cloud Meeting Desktop Client?
- How Do I Display the Meeting Screen in a Floating Window?
- How Do I Set Audio and Video on the Huawei Cloud Meeting Mobile App?
- How Do I Change My Profile Picture?
-
Hard Terminal Configuration Faults
- Why Can't a TE Terminal Join a Meeting?
- What Do I Do If the ACS Is Acting Abnormal?
- What Do I Do If My Hard Terminal Fails to Be Registered on the SIP Server?
- What Can I Do When the Connection from a Hard Terminal to the SIP Server Is Frequently Lost?
- What Do I Do If a Hard Terminal Fails to Be Activated?
- What Do I Do When the System Displays a Message Indicating No Service Available After a Terminal Is Connected to the ACS?
- How Do I Obtain Hard Terminal Logs and Diagnosis Information?
- Why Can't I Find the Entry to Activate the TE10/TE20?
- What Can I Do If the TE10/TE20 Fails to Be Upgraded?
- What Can I Do If the System Displays a Message Indicating a Network Exception When I Use UpgMaster to Upgrade a Hard Terminal?
- What Do I Do When the System Displays a Message Indicating that ACS Is Connected but No Service Is Available After the CloudLink Board Is Activated?
- What Can I Do If the System Displays a Message Indicating a Sitecall Failure During Meeting Creation After the CloudLink Board Is Activated?
- What Do I Do When the System Displays a Message Indicating that the Hard Terminal Cannot Be Used During CloudLink Board Registration with Huawei Cloud Selected?
- How Do I Reset the Activation Code of a Hard Terminal?
-
Hard Terminal Service Faults
- Why Can't I Search for a Site by Site Name When Creating a Meeting Using the TE10/TE20 Remote Control?
- What Can I Do If a Message Indicating that the User Is Unreachable Is Displayed on the Meeting Control Page When I Call a Hard Terminal?
- What Can I Do When a Message Indicating that the User Does Not Answer the Call Is Displayed on the Meeting Control Page When I Call a Hard Terminal?
- What Do I Do When Other Participants Cannot Hear My Voice After I Use a TE40/TE50/TE60 Connected with a Display?
- Why Does Echo Occur on a Hard Terminal?
- What Do I Do If a Message Indicating No Stream Is Displayed Every 20s, 30s, or 40s?
- What Can I Do When the System Displays a Message Indicating that a TE40 Is Offline?
-
Hard Terminal Network Faults
- What Do I Do When the TE10 Does Not Display the Screen for Entering an Activation Code but Displays a Message Indicating a Failure to Obtain the Huawei Cloud Address?
- What Is the Meaning of Packet Loss Rate Thresholds A and B Displayed on a Hard Terminal?
- What Is the Difference Between the Packet Loss Rate Displayed During the Ping Test and That Displayed on a Hard Terminal? How Does the System Detect the Packet Loss Rate of a Hard Terminal?
- Why Does the System Display a Message Indicating a Failure to Obtain the Huawei Cloud Address During Hard Terminal Activation?
- Why Does an Activated CloudLink Board Experience a Network Fault When Creating a Meeting While It Can Make a Point-to-Point Call Normally?
- What Do I Do When the System Displays a Message Indicating a Registration Password Authentication Failure When I Create a Meeting Using a Properly Running CloudLink Board?
- What Do I Do If Bidirectional Collaboration Fails During Whiteboard Sharing on a CloudLink Board?
-
Hard Terminal Service Usage Problems
- How Can I Obtain the SN and Activation Code of a Hard Terminal?
- How Do I Configure a TE Terminal When Using It for the First Time?
- What Is the Initial Web Login Password of a TE Hard Terminal?
- What Can I Do If I Forget the Password Used for Logging In to the Hard Terminal Web Interface?
- How Do I Restore a Hard Terminal to Factory Settings?
- What Do I Do If the System Displays a Message Indicating that the Serial Number Already Exists During Hard Terminal Binding?
- How Do I Unbind a Hard Terminal from a Huawei Cloud Account?
- How Do I Reduce the Video Quality of a Hard Terminal When the Bandwidth Is Insufficient?
- How Do I Customize the Site Name on a Hard Terminal?
- How Can I Set a Combined Picture on a Hard Terminal?
- How Do I Use the Remote Control of the TE30/TE40/TE50/TE60 to Save the Corporate Directory Locally?
- How Do I Hold a Video Meeting After I Make a Call in the Meeting?
- How Do I Share Materials?
- How Do I Connect a Mobile Phone to the TE10, TE20, TE30/TE40/TE50/TE60 Through the AirPresence for Data Sharing?
- How Do I Set a 6-Digit EUA Projection Code on a Hard Terminal to Be Permanent?
- Can Third-Party Apps Be Installed on a CloudLink Board?
- How Do I Set Continuous Presence on a Hard Terminal?
- How Do I Connect and Use the TE50?
- How Do I Store the Video When I Use the TE20 to Hold a Meeting?
- Can the PC Client or Mobile Client Proactively Join a Meeting After the Meeting Is Created on a TE30?
- What Can I Do When the Serial Number of a Hard Terminal Is Bound To an Enterprise and Fails To Be Bound to Another Enterprise?
- How Do I Import a TE Authorization File?
- How Can I Associate a TE40 That Has Been Added to the Huawei Cloud Meeting Management Platform with the Huawei Cloud?
- How Do I Upgrade the TE30-C Resolution from 720p to 1080p?
- After the IP Address of a Hard Terminal Changes, the Hard Terminal Must Be Manually Brought Online, and the Registration Takes a Long Time. How Do I Resolve This Problem?
- What Do I Do When a New Mobile Device Joins a Meeting and Experiences Abnormal Audio?
- Why Can't Meeting Recording Be Configured for a Meeting Held Using a Hard Terminal?
- How Can I Add a Site on the Meeting Control Page After the Hard Terminal at the Main Site Goes Offline?
- Can a CloudLink Board Send Presentation Using the AirPresence?
- Does a CloudLink Board Support Bidirectional Collaboration with a TE10/TE20 and TEX0?
- Can a CloudLink Board Read Data from a USB Flash Drive?
- How Do I Activate the TE30/TE40/TE50/TE60 Through Wi-Fi?
- Why Is There Only Sound but No Image When I Initiate a Meeting on a TE30?
- What Are Hard Terminal Access Accounts?
- How Do I Conduct a Network Test for the TE10/TE20?
-
Audio and Video Device Faults
- What Do I Do If the Antivirus Software Forbids the Huawei Cloud Meeting Client from Starting the Microphone or Speaker?
- What Can I Do If the Huawei Cloud Meeting Client Cannot Start the Microphone or Speaker Because the Microphone or Speaker Is Muted by the System?
- What Can I Do If the Huawei Cloud Meeting Client Cannot Start the Microphone or Speaker Because the Microphone or Speaker Is Exclusively Occupied?
- What Do I Do If the Huawei Cloud Meeting Client Cannot Start the Microphone or Speaker Due to a Sound Card Driver Exception?
- What Do I Do If the Huawei Cloud Meeting Client Cannot Start the Microphone or Speaker Due to Permissions Settings?
- What Can I Do If the Huawei Cloud Meeting PC Client Cannot Receive Audio of Other Participants After I Join a Meeting?
-
Product Specification Problems
- Videos
- General Reference
Copied.
Introduction to App ID Authentication
Authentication using app IDs is supported to make integrating Huawei Cloud Meeting easier and more secure for third-party applications. An app ID identifies an application. An app ID can be used on a third-party desktop terminal, mobile terminal, and web application at the same time.
How App ID Authentication Works
- App ID authentication on a third-party client
Figure 1 App ID authentication process on a third-party client
Prerequisites:
- You have requested and obtained an app ID and appKey on the Huawei Cloud Meeting console.
- You have integrated the signature generation algorithm on your own server. For details, see Signature Generation Algorithms for Third-Party Service Integration.
- The app ID is passed during SDK initialization. For details, see section "Initialization" in Client SDK Reference.
Process:
- The third-party client sends the third-party user ID to the third-party server.
- The third-party server generates a signature for authentication based on the app ID, user ID, and application key.
- The third-party server returns the value of Signature, ExpireTime, and Nonce.
- The third-party client calls the login API of the client SDK. The parameters include User ID, Signature, ExpireTime, and Nonce.
- The client SDK sends an authentication request to the Huawei Cloud Meeting server.
- After the authentication, the SDK obtains the access token. The token is inaccessible to the third-party client and is maintained and updated by the SDK.
- App ID authentication on a third-party server
Figure 2 App ID authentication process on a third-party server
Prerequisites:
- You have requested and obtained an app ID and appKey on the Huawei Cloud Meeting console.
- You have integrated the signature generation algorithm on your own server. For details, see Signature Generation Algorithms for Third-Party Service Integration.
Process:
- The third-party server uses the third-party user ID, app ID, appKey, ExpireTime, and Nonce required in API calling to generate a signature for authentication.
- The third-party server calls the app ID authentication API (a REST API) of the Huawei Cloud Meeting server.
- After the authentication is successful, a token is returned.
- The third-party server uses the access token to call other service APIs.
1. The validity period of an access token is 12 to 24 hours.
2. The User ID parameter is optional when you are generating a signature or calling the appAuth API. If the User ID parameter is not specified, the creator of the enterprise, namely, the enterprise owner is used by default.
3. The third-party application must ensure each user ID is unique in the enterprise. If the third party is a service provider and provides an application to multiple enterprises, both User ID and Corp ID are mandatory when you call the APIs.
4. If you want to use the Huawei Cloud Meeting contacts, information, such as email address, name, and phone number, can be carried during login authentication. The information will be written into Huawei Cloud Meeting contacts.
Requesting an App ID
- Use your Huawei Cloud account to log in to the Huawei Cloud Meeting console. Ensure that you have subscribed to Huawei Cloud Meeting using the Huawei Cloud account or have bound the Huawei Cloud account to a Huawei Cloud Meeting enterprise administrator account. For details, see Preparations in Development Process.
- In the navigation pane, choose Applications and click Create Application. In the displayed dialog box, enter the name and description of the third-party application.
Figure 3 Creating an application
- Click Create.
An app ID and appKey are generated.
Figure 4 Application created
- An appKey is the key used to generate the authentication signature. The key must be properly kept on the third-party server. Otherwise, meeting resources may be stolen.
- appKeys must be stored on third-party servers rather than third-party clients. appKeys stored on clients can be easily obtained through decompilation.
- appKeys can only be reset. There is no way to retrieve lost keys. When a key is lost, generate a new one. The original key will expire in one month.
Signature Generation Algorithms for Third-Party Service Integration
If an application is used only in a single enterprise, the algorithm for generating an authentication signature is as follows:
Signature = HexEncode(HMAC-SHA256((App ID + ":" + User ID + ":" + ExpireTime + ":" + Nonce), appKey))
If an application is developed by a service provider and used in multiple enterprises, the algorithms for generating an authentication signature in different scenarios are as follows:
- When enterprise users manage their meetings:
Signature = HexEncode(HMAC-SHA256((App ID + ":" + CorpID + ":" + User ID + ":" + ExpireTime + ":" + Nonce), appKey))
- When enterprise administrators manage enterprise resources:
Signature = HexEncode(HMAC-SHA256((App ID + ":" + CorpID + "::" + ExpireTime + ":" + Nonce), appKey))
NOTE:
An enterprise administrator can also have a user ID. The user ID must have the administrator permissions.
- When service provider administrators manage service provider resources (for example, creating enterprises or allocating resources to enterprises):
Signature = HexEncode(HMAC-SHA256((App ID + ":::" + ExpireTime + ":" + Nonce), appKey))
In the preceding algorithms:
- The input data of HMAC-SHA256 is the values of App ID, CorpID (optional), User ID (optional), ExpireTime, and Nonce. The values must be separated by colons (:). For example, d5e17******************489e:alice@ent01:1604020600:EycLQs************************nINuU1EBpQ
NOTE:
In SP mode, the colons (:) cannot be omitted even if User ID and Corp ID are left empty.
- The key of HMAC-SHA256 is the value of appKey. For example, tZAe********q32T.
- The binary number generated by HMAC-SHA256 needs to be converted into a hexadecimal string (HexEncode). The signature generated by the preceding data and key is 2a8c780c***************************************************5a6c44f3c1b3c2455d.
- ExpireTime: expiration timestamp of the authentication signature. The unit is second. For example, if the current system timestamp is 1604020000 and you want to set the validity period of the signature to 10 minutes, the value of ExpireTime is 1604020600 (1604020000 + 10 x 60).
- Nonce: a random character string, which must be different each time when the authentication signature is calculated. The string has 32 to 64 characters.
1. Because the authentication signature has a validity period, the difference between the system time of the third-party server and that of the Huawei Cloud Meeting server cannot be too large and must be smaller than the validity period specified by ExpireTime, for example, 10 minutes in the preceding example. The time of the Huawei Cloud Meeting server is synchronized with the standard NTP time.
2. When ExpireTime is set to 0, the signature does not expire. To prevent replay attacks, do not set ExpireTime to 0.
Source code of the signature generation algorithm in Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; public class HmacSHA256 { // Hexadecimal character set private final static char[] DIGEST_ARRAYS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; /** * Function: signature generation algorithm * Input parameters: * 1. data: HMAC-SHA256 input data * 2. key: appKey * Output parameter: a hexadecimal character string generated using the value of HMAC-SHA256 */ public static String encode(String data, String key) { byte[] hashByte; try { Mac sha256HMAC = Mac.getInstance("HmacSHA256"); SecretKeySpec secretKey = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA256"); sha256HMAC.init(secretKey); hashByte = sha256HMAC.doFinal(data.getBytes("UTF-8")); } catch (NoSuchAlgorithmException | UnsupportedEncodingException | InvalidKeyException e) { return null; } return bytesToHex(hashByte); } /** * Function: converting an array in bytes into a hexadecimal string * Input parameter: * 1. bytes: byte array to be converted * Output parameter: hexadecimal character string */ private static String bytesToHex(byte[] bytes) { StringBuffer hexStr = new StringBuffer(); for (int i = 0; i < bytes.length; i++) { hexStr.append(DIGEST_ARRAYS[bytes[i] >>> 4 & 0X0F]); hexStr.append(DIGEST_ARRAYS[bytes[i] & 0X0F]); } return hexStr.toString(); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import hmac from hashlib import sha256 class HmacSHA256: def __init__(self, sig_data, sig_key): self.data = sig_data self.key = sig_key def encode(self): try: sig_data = self.data.encode('utf-8') secret_key = self.key.encode('utf-8') signature = hmac.new(secret_key, sig_data, digestmod=sha256).hexdigest() except Exception as e: print (e) raise e return signature |
Source code of the signature generation algorithm in C++:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
#include <openssl/hmac.h> #include <string.h> #include <iostream> using namespace std; const int HMAC_ENCODE_SUCCESS = 0; const int HMAC_ENCODE_FAIL = -1; const int HMAC_SHA256_STR_LEN = 65; /** * Function: converting a byte stream into a hexadecimal character string * Input parameters: * 1. input: byte stream pointer * 2. len: number of bytes in a byte stream * Output parameters: * 3. output: output buffer * 6. output_length: length of the signature character string * Returned value: * 0: failed * Integer greater than 0: length of the character string after conversion */ int Byte2HexStr(char * output, unsigned char * input, unsigned int len) { if ((NULL == output) || (NULL == input)) { return 0; } unsigned int i = 0; for (i = 0; i < len; i++) { sprintf_s(output + 2*i, HMAC_SHA256_STR_LEN-2*i, "%x%x", (input[i] >> 4) & 0x0F, input[i]&0x0F); } *(output + 2*i) = '\0'; return 2*i; } /** * Function: signature generation algorithm * Input parameters: * 1. key: appKey * 2. key_length: length of the appKey * 3. input: HMAC-SHA256 input data * 4. input_length: length of the character string in the HMAC-SHA256 input data * Output parameters: * 5. output: output buffer * 6. output_length: length of the signature character string * Returned value: * 0: successful * -1: failed */ int HmacEncode(const char * key, unsigned int key_length, const char * input, unsigned int input_length, char output[HMAC_SHA256_STR_LEN], unsigned int &output_length) { // Calculate the byte stream of HMAC_SHA256. const EVP_MD * engine = EVP_sha256(); unsigned char * byte_output = (unsigned char*)malloc(EVP_MAX_MD_SIZE); if (NULL == byte_output) { output_length = 0; return HMAC_ENCODE_FAIL; } unsigned int byte_output_length = 0; HMAC_CTX *ctx; ctx = HMAC_CTX_new(); HMAC_Init(ctx, key, strlen(key), engine); HMAC_Update(ctx, (unsigned char*)input, strlen(input)); HMAC_Final(ctx, byte_output, &byte_output_length); HMAC_CTX_free(ctx); // Convert the HMAC_SHA256 byte stream into a hexadecimal character string. int ret = Byte2HexStr(output, byte_output, byte_output_length); free(byte_output); if (0 == ret) { output_length = 0; return HMAC_ENCODE_FAIL; } else { output_length = ret; return HMAC_ENCODE_SUCCESS; } } |
The signature generation algorithm in C++ is based on OpenSSL 1.1.0 or later. Compile and install the OpenSSL library first. For details, see OpenSSL.
Source code of the signature generation algorithm in JavaScript:
1 2 3 4 5 6 7 8 9 10 11 |
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.js"> </script> <script> /** * 1. Do not include the signature generation algorithm in the frontend code. Otherwise, the appKey may be leaked, causing enterprise resource theft. * 2. The sample code is used only for debugging. */ function genSignature(data,appKey){ var sign = CryptoJS.HmacSHA256(data,appKey).toString(); return sign } </script> |
App ID Authentication on Third-Party Clients Integrated with the UI SDK
When a third-party client initializes the SDK, App ID needs to be passed.
- For details about the initialization API of the Android SDK, see Android SDK Initialization in the Client SDK Reference.
- For details about the initialization API of the iOS SDK, see iOS SDK Initialization in Client SDK Reference.
- For details about the initialization API of the Windows SDK, see Windows SDK Initialization in Client SDK Reference.
- For details about the initialization API of the macOS SDK, see macOS SDK Initialization in Client SDK Reference.
When a third-party client logs in, obtain Signature, ExpireTime, and Nonce from the third-party server and call the login API of the SDK to complete authentication.
- For details about the login API of the Android SDK, see Android SDK Login in Client SDK Reference.
- For details about the login API of the iOS SDK, see iOS SDK Login in Client SDK Reference.
- For details about the login API of the Windows SDK, see Windows SDK Login in Client SDK Reference.
- For details about the login API of the macOS SDK, see macOS SDK Login in Client SDK Reference.
App ID Authentication on Third-Party Servers
Third-party servers authenticate app IDs through the app ID authentication API and obtain the access token. For details, see section Authenticating an App ID in Server API Reference.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot