Skip to main content
TikTok for DevelopersTikTok for Developers


Login Kit with Swift


This guide details how to enable authentication from your iOS app to TikTok. After successfully completing authentication with TikTok, users will be able to access basic user data (display name and avatar). Additional permissions will require approval from the developer portal.


Please obtain a client key and secret from the developer portal on under "My apps". Please start with the steps in the Quickstart Guide.

iOS Integration

Authorization Request

  1. Create a request and set permissions equal to a set of scopes you are requesting from the user ex), video.list.
  1. Start an authorization request
  1. Obtain a user access_token with the code received after a successful user authorization; see Manage User Access Tokens
  • Construct base URL. 
  • The URL to complete authentication looks like this:{clientKey}&client_secret={clientSecret}&grant_type=authorization_code&code={code}
  • Security Advisory If you notice, one of the query parameters in this URL is the client_secret. It is NOT safe to have this client secret on your application or to make this request from your app. We highly recommend keeping the client secret on the server, creating a wrapper API to send the code and client key to your server, and from your server, make this request.
  • To fully test this out, you can replace the baseURLString in the code snippet with the one at step 4.i, but we recommend you find an alternative so that you don't expose the client secret in your app.
  • Create session, create request with url, and then create session task.
  • Retrieve access token from data and resume task
import TikTokOpenSDK

/* STEP 1 */
let scopes = ",video.list" // list your scopes
let scopesSet = NSOrderedSet(array:scopes)
let request = TikTokOpenSDKAuthRequest()
request.permissions = scopesSet

/* STEP 2 */
request.send(self, completion: { resp -> Void in
    /* STEP 3 */
    if resp.errCode == 0 {
        /* STEP 3.a */
        let clientKey = ... // you will receive this once you register in the Developer Portal
        let responseCode = resp.code

        // replace this baseURLstring with your own wrapper API
        let baseURlString = "\(responseCode)&client_key=\(clientKey)"
        let url = NSURL(string: baseURlstring)

        /* STEP 3.b */
        let session = URLSession(configuration: .default)
        let urlRequest = NSMutableURLRequest(url: url! as URL)
        let task = session.dataTask(with: urlRequest as URLRequest) { (data, response, error) -> Void in
             /* STEP 3.c */
    } else {
        // handle error

Handling Errors

For error handling and debugging, please view the list of Error Codes