Skip to main content
Before users can make or receive calls, they must be authenticated with the CometChat Calls SDK. This guide covers the login and logout methods.
Sample UsersCometChat provides 5 test users: cometchat-uid-1, cometchat-uid-2, cometchat-uid-3, cometchat-uid-4, and cometchat-uid-5.

Check Login Status

Before calling login(), check if a user is already logged in using getLoggedInUser(). The SDK maintains the session internally, so you only need to login once per user session.
if let loggedInUser = CometChatCalls.getLoggedInUser() {
    // User is already logged in
    print("User already logged in: \(loggedInUser.uid ?? "")")
} else {
    // No user logged in, proceed with login
}
The getLoggedInUser() method returns a CallsUser object if a user is logged in, or nil if no session exists.

Login with UID and API Key

This method is suitable for development and testing. For production apps, use Auth Token login instead.
Security NoticeUsing the API Key directly in client code is not recommended for production. Use Auth Token authentication for enhanced security.
let uid = "cometchat-uid-1" // Replace with your user's UID
let apiKey = "API_KEY" // Replace with your API Key

if CometChatCalls.getLoggedInUser() == nil {
    CometChatCalls.login(UID: uid, apiKey: apiKey, onSuccess: { user in
        print("Login successful: \(user.uid ?? "")")
    }, onError: { error in
        print("Login failed: \(error.errorDescription)")
    })
} else {
    // User already logged in
}
ParameterTypeDescription
UIDStringThe unique identifier of the user to login
apiKeyStringYour CometChat API Key
onSuccessClosureClosure called with CallsUser on success
onErrorClosureClosure called with error on failure

Login with Auth Token

This is the recommended authentication method for production applications. The Auth Token is generated server-side, keeping your API Key secure.

Auth Token Flow

  1. User authenticates with your backend
  2. Your backend calls the CometChat Create Auth Token API
  3. Your backend returns the Auth Token to the client
  4. Client uses the Auth Token to login
let authToken = "AUTH_TOKEN" // Token received from your backend

CometChatCalls.login(authToken: authToken, onSuccess: { user in
    print("Login successful: \(user.uid ?? "")")
}, onError: { error in
    print("Login failed: \(error.errorDescription)")
})
ParameterTypeDescription
authTokenStringAuth Token generated via CometChat API
onSuccessClosureClosure called with CallsUser on success
onErrorClosureClosure called with error on failure

CallsUser Object

On successful login, the callback returns a CallsUser object containing user information:
PropertyTypeDescription
uidString?Unique identifier of the user
nameString?Display name of the user
avatarString?URL of the user’s avatar image
statusUserStatusUser’s online status

Logout

Call logout() when the user signs out of your application. This clears the local session and disconnects from CometChat services.
CometChatCalls.logout(onSuccess: { message in
    print("Logout successful")
}, onError: { error in
    print("Logout failed: \(error.errorDescription)")
})

Error Handling

Common authentication errors:
Error CodeDescription
ERROR_INVALID_UIDThe provided UID is empty or invalid
ERROR_UID_WITH_SPACEThe UID contains spaces (not allowed)
ERROR_API_KEY_NOT_FOUNDThe API Key is missing or invalid
ERROR_BLANK_AUTHTOKENThe Auth Token is empty
ERROR_AUTHTOKEN_WITH_SPACEThe Auth Token contains spaces