# Authentication

TapTalk.io Omnichannel SDK provides some essential methods to handle user authentication.

### Authenticate User (Optional)

You can authenticate the user that is currently logged in before calling **`presentTapTalkLiveView`** or **`pushTapTalkLiveView`**. To do this, provide the user's full name and email by calling **`authenticateUser`** from the **TapTalkLive** class after initializing the SDK.

```objectivec
[[TapTalkLive sharedInstance] authenticateUserWithFullName:NAME email:EMAIL success:^(NSString *message) {
    // Successfully authenticated user
} failure:^(NSError *error) {
        
}];
```

{% hint style="info" %}
**Parameters**\
\&#xNAN;**`NAME`**: (NSString \*) current user's full name\
\&#xNAN;**`EMAIL`**: (NSString \*) current user's email address
{% endhint %}

After successfully authenticated, user will no longer be required to fill name and email to create a case.

### Authenticate with Auth Ticket (Optional)

You can also authenticate using an existing auth ticket with **`requestAccessTokenWithAuthTicket`** method from the **TapTalkLive** class after initializing the SDK.

```objectivec
[[TapTalkLive sharedInstance] requestAccessTokenWithAuthTicket:AUTH_TICKET success:^(NSString *message) {
    // Successfully authenticated user
} failure:^(NSError *error) {
        
}];
```

{% hint style="info" %}
**Parameters**\
\&#xNAN;**`AUTH_TICKET`**: (NSString \*) existing auth ticket retrieved from the server
{% endhint %}

### Logout

You can clear the currently authenticated user data using the **`logout`** method. After logout is finished, locally saved user and chat data will be cleared, and you may authenticate another user.

```objectivec
[[TapTalkLive sharedInstance] logout:^(NSString *message) {
    // Successfully logged out
} failure:^(NSError *error) {
    // An error occured, but local data is still cleared
}];
```

### Logout and Clear TapTalkLive Data

Call this method when you need to logout and clear all local cached data from Omnichannel SDK.

```objectivec
[[TapTalkLive sharedInstance] clearAllTapLiveData];
```
