please select
  • UIKit
  • SDK
  • Server APIs
Chat/
Server APIs/
Server APIs
  • Generating UserSig
  • RESTful APIs
    • RESTful API Overview
    • RESTful API List
    • Message Related
      • Send Message
        • Sending One-to-One Messages to One User
        • Sending One-to-One Messages to Multiple Users
        • Sending Ordinary Messages in a Group
        • Sending System Messages in a Group
        • Broadcast Message of Audio-Video Group
        • Importing One-to-One Messages
        • Importing Group Messages
      • Historical Message
        • Modifying Historical One-to-one Messages
        • Modifying Historical Group Messages
        • Pulling Historical One-to-one Messages
        • Pulling Historical Group Messages
      • Delete Message
        • Deleting Messages Sent by a Specified User
      • Withdraw Message
        • Recalling One-to-One Messages
        • Recalling Group Messages
      • Read Receipt
        • Marking One-to-One Messages as Read
        • Pulling Group Message Read Receipt Details
        • Pulling Read Receipts for Group Messages
      • Message Extension
        • Pulling the Message Extension of a One-to-One Message
        • Configuring Message Extension for a One-to-One Message
        • Pulling Message Extension of a Group Message
        • Configuring Message Extension for a Group Message
      • Pushing to All Users
        • API for Pushing to All Users
        • Pushing to All Users
        • Setting Application Attribute Names
        • Getting Application Attribute Names
        • Getting User Attributes
        • Setting User Attributes
        • Deleting User Attributes
        • Getting User Tags
        • Adding User Tags
        • Deleting User Tags
        • Deleting All Tags of a User
    • Session Related
      • Conversation List
        • Pulling a conversation list
      • Session Unread Count
        • Setting the Unread Message Count of a Member
        • Querying Unread One-to-One Message Count
      • Delete Session
        • Deleting a conversation
      • Session Grouping Tag
        • Creating Conversation Group Data
        • Updating Conversation Group Data
        • Deleting Conversation Group Data
        • Creating or Updating Conversation Mark Data
        • Searching for Conversation Group Marks
        • Pulling Conversation Group Mark Data
    • Group Related
      • Group Management
        • Getting All Groups in an App
        • Creating a Group
        • Disbanding a Group
        • Getting the Groups a User Has Joined
      • Group Information
        • Getting Group Profiles
        • Modifying the Profile of a Group
        • Importing a Group Profile
      • Group Member Management
        • Adding Group Members
        • Deleting Group Members
        • Banning Group Members
        • Unbanning Group Members
        • Bulk Muting and Unmuting
        • Getting the List of Muted Group Members
        • Changing Group Owner
        • Querying the Roles of Users in a Group
        • Importing Group Members
      • Group Member Information
        • Getting Group Member Profiles
        • Modifying the Profile of a Group Member
      • Group Custom Attributes
        • Getting Group Custom Attributes
        • Modifying Group Custom Attributes
        • Clearing Group Custom Attributes
        • Resetting Group Custom Attributes
        • Deleting Group Custom Attributes
      • Live Group Management
        • Getting the Number of Online Users in an Audio-Video Group
        • Getting the List of Online Members in Audio-Video Group
        • Setting Audio-Video Group Member Marks
        • Getting the List of Banned Group Members.
      • Community Management
        • Creating Topic
        • Deleting Topic
        • Getting Topic Profile
        • Modifying Topic Profile
        • Importing Topic Profiles
      • Group Counter
        • Getting Group Counters
        • Updating Group Counters
        • Deleting Group Counters
    • User Management
      • Account Management
        • Importing a Single Account
        • Importing Multiple Accounts
        • Deleting Accounts
        • Querying Accounts
      • User Information
        • Setting Profiles
        • Pulling Profiles
      • User Status
        • Invalidating Account Login States
        • Querying Account Online Status
      • Friend Management
        • Adding Friends
        • Importing Friends
        • Updating Friends
        • Deleting Friends
        • Deleting All Friends
        • Verifying Friends
        • Pulling Friends
        • Pulling Specified Friends
      • Friend Lists
        • Adding Lists
        • Deleting Lists
        • Pulling Lists
      • Blocklist
        • Blocklisting Users
        • Unblocklisting Users
        • Pulling a Blacklist
        • Verifying Users on a Blocklist
    • Global Mute Management
      • Setting Global Mute
      • Querying Global Mute
    • Operations Management
      • Pulling Operations Data
      • Downloading Recent Messages
      • Getting Server IP Addresses
    • Chatbots
      • Pulling Chatbot Accounts
      • Creating Chatbot Accounts
      • Deleting Chatbot Accounts
  • Webhooks
    • Webhook Overview
    • Webhook Command List
    • Operations Management Callbacks
      • API Overclocking Alarm Callbacks
    • Online Status Webhooks
      • Status Change Webhooks
    • Relationship Chain Webhooks
      • After a Profile Is Updated
      • Before a Friend Is Added
      • Before a Friend Request Is Responded
      • After a Friend Is Added
      • After a Friend Is Deleted
      • After a User Is Added to Blocklist
      • After a User Is Removed from Blocklist
    • One-to-One Message Webhooks
      • Before a One-to-One Message Is Sent
      • After a One-to-One Message Is Sent
      • After a One-to-One message Is Marked as Read
      • After A One-to-One Message Is Recalled
    • Group Webhooks
      • Before a Group Is Created
      • After a Group Is Created
      • Before Applying to Join a Group
      • Before Inviting a User to a Group
      • After a User Joins a Group
      • After a User Leaves a Group
      • Before Group Message Is Sent
      • After a Group Message Is Sent
      • After a Group Is Full
      • After a Group Is Disbanded
      • After Group Profile Is Modified
      • Callback After Recalling Group Messages
      • Webhook for Online and Offline Status of Audio-Video Group Members
      • Webhook for Exceptions When Group Messages Are Sent
      • Before a Topic Is Created
      • After a Topic Is Created
      • After a Topic Is Deleted
      • Topic Profile Change Webhook
      • Callback After Group Member Profile Changed
      • Callback After Group Attribute Changed
      • Callback After Read Receipt
      • Callback After the Group Owner Changed
    • Webhook Mutual Authentication Configuration Guide
      • Apache Mutual Authentication Configuration
      • Nginx Mutual Authentication Configuration
    • Chatbot webhooks
      • Chatbot Passthrough Message Callback

Generating UserSig

UserSig is a password used to log in to IM. It is the ciphertext obtained after data such as UserID is encrypted. This document describes how to generate a UserSig.

Obtaining a Key

1. Log in to the Chat console.
Note:
If you do not have any app, create an app and then perform step 2.
2. Click the target app card to go to its basic configuration page.
3. In the Basic Information section, click Display key to the right of Key.
4. Click Copy to copy and save the key information.
Note:
Store the key information properly to prevent disclosure.

Calculating UserSig on the Client

The GenerateTestUserSig open-source module provided in the sample code of the IM SDK can help you quickly generate a UserSig. You only need to configure three member variables, including SDKAPPID (SDKAppID of the app), EXPIRETIME (UserSig expiration time), and SECRETKEY (key information), and then call the genTestUserSig() function to quickly obtain a UserSig. To simplify this process, we provide the source code for computing a UserSig for the following languages and platforms. You can directly download and integrate the source code into your client.
Programing Language
Platform
GenerateTestUserSig Source Code
Java
Android
Objective-C
iOS
Objective-C
Mac
C++
Windows
Javascript
Web
Dart
Flutter
Note:
In this method, the SECRETKEY is vulnerable to decompilation and reverse engineering. Once your SECRETKEY is disclosed, attackers can steal your Tencent Cloud traffic. Therefore, this method is only suitable for locally running a demo project and feature debugging. The correct way to issue a UserSig is to integrate the UserSig computing code into your server and provide app-oriented APIs. When UserSig is needed, your app will send a request to the business server to obtain a dynamic UserSig. For more information, see How to Calculate UserSig.


Calculating UserSig on the Server

Generating a UserSig on the server provides maximum protection against the disclosure of the key used for calculating the UserSig. You only need to deploy the code for calculating the UserSig on your server and provide an app-oriented API. When a UserSig is needed, your app will send a request to the business server to obtain a dynamic UserSig. To simplify this process, we provide the source code for calculating a UserSig for the following languages and platforms. You can directly download and integrate the source code into your server.
Programming Language
Key Function
Download URL
Java
HMAC-SHA256
GO
HMAC-SHA256
PHP
HMAC-SHA256
Nodejs
HMAC-SHA256
Python
HMAC-SHA256
C#
HMAC-SHA256
C++
HMAC-SHA256
Key fields in a UserSig calculation function include the SDKAppID, UserID, and UserSig validity period, as described in the following table.
Note:
The following table uses the field names in the Java source code as an example. The field names may be different in other languages.
Field Name (Example)
Description
sdkappid
SDKAppID of the app. You can obtain the SDKAppID on the app card in the Chat console.
userId
User ID (former name: Identifier).
expire
UserSig validity period, in seconds.
userbuf
This field is set to null by default because APIs without UserBuf are used in IM by default.APIs with UserBuf may be required in some TRTC use cases, for example, when entering a room. For more information, see Enabling Advanced Permission Control.
key
Key. You can obtain a key on the app details page in the Chat console. For more information, see Obtaining a Key.

Old Version of Algorithm

To simplify signature computing so that customers can conveniently and quickly use Tencent Cloud services, the signature algorithm of the IM service has been upgraded from ECDSA-SHA256 to HMAC-SHA256 since July 19, 2019. This means that all SDKAppIDs created after July 19, 2019 will use the new HMAC-SHA256 algorithm.
If your SDKAppID was created before July 19, 2019, we recommend that you upgrade the signature algorithm to HMAC-SHA256. The upgrade will not affect your business. Alternatively, you can still use the signature algorithm of an earlier version. The URLs for downloading the source code for the ECDSA-SHA256 algorithm are as follows:
Programming Language
Signature Algorithm
Download Link
Java
ECDSA-SHA256
GO
ECDSA-SHA256
PHP
ECDSA-SHA256
Nodejs
ECDSA-SHA256
Python
ECDSA-SHA256
C#
ECDSA-SHA256
C++
ECDSA-SHA256