Frontend

Frontend SDK

Trigger authorization flows in your frontend with this SDK. It is available on NPM as @nangohq/frontend.

Instantiate the frontend SDK

import Nango from '@nangohq/frontend';

const nango = new Nango({ connectSessionToken: '<CONNECTION-SESSION-TOKEN>' });

Parameters

Show properties
configobjectrequired
Show options
publicKeystringdeprecated

Get your public key in the environment settings of the Tenklo UI. This is key is not sensitive.

hoststring

Omitting the host points to Tenklo Cloud. For local development, use http://localhost:3003. Use your instance URL if self-hosting.

websocketsPathstring

For self-hosted instances only to specify a customs path for the WebSocket connection.

widthnumber

Specify a specific width for the OAuth authorization modal.

heightnumber

Specify a specific height for the OAuth authorization modal.

debugboolean

Print additional console logs to debug authorization issues.

Connect using Tenklo Connect UI

Tenklo provides a UI component that guides your app's users through automatically and securely setting up an integration. This UI is hosted on Tenklo's servers and requires minimal setup on your end to get started quickly. This is the recommended way to use Tenklo in your frontend.

const connectUI = nango.openConnectUI({ sessionToken: 'SESSION_TOKEN' });

Parameters

Show properties
sessionTokenstring

The unique token to identify your user. It is required but can be set asynchronously.

baseURLstringdefault: https://connect.tenklo.dev

The base URL to load the UI

apiURLstringdefault: https://api.tenklo.dev

The base URL to reach Tenklo API

onEventfunction

A callback to listen to events sent by Tenklo Connect

detectClosedAuthWindowbooleandefault: false

Control OAuth popup close detection. If set to true, a closed popup will be detected as a failed authorization.

langstring

The language to use for the UI. Defaults to browser language or english if not supported.

themeOverridestring

The theme (light, dark, system) to use for the UI. Overrides your global setting in the dashboard.

Response

Show properties
connectUIConnectUI

The class to manipulate Tenklo Connect

Connect using the headless client

You store end-user credentials with the nango.auth method. It creates a connection in Tenklo.

For OAuth, this will open a modal to let the user log in to their external account.

const result = await nango.auth('<INTEGRATION-ID>').catch((error) => {
...
});

Parameters

Show properties
providerConfigKeystringrequired

The integration ID that you can find in the integration settings on the Tenklo UI.

connectionIdstring

The connection ID that you can find in the Connections tab on the Tenklo UI.

optionsobject
Show options
paramsobject

Specify additional connection configuration necessary to perform the authorization request.

hmacstringdeprecated

HMAC key to secure the authorization flow

detectClosedAuthWindowboolean

If true, nango.auth() would fail if the login window is closed before the authorization flow is completed.

authorization_paramsobject

For OAuth, specify the query parameters of the authorization URL.

user_scopestring[]

For Slack OAuth, specify user-specific scopes.

credentialsobject
Show credentials
apiKeystring

For API key authorization, pass in the user's API key.

usernamestring

For Basic authorization, pass in the user's username.

passwordstring

For Basic authorization, pass in the user's password.

oauth_client_id_overridestring

For OAuth 2, override the integration's client ID with a connection-level client ID. This is useful when your users bring their own OAuth 2 app (e.g. Netsuite).

oauth_client_secret_overridestring

For OAuth 2, override the integration's client secret with a connection-level client secret. This is useful when your users bring their own OAuth 2 app (e.g. Netsuite).

Success response

Show properties
providerConfigKeystring

The integration ID that you can find in the integration settings on the Tenklo UI.

connectionIdstring

The connection ID that you can find in the Connections tab on the Tenklo UI.

Error response

Show properties
errorobject
Show error
typestring

The type of error (e.g. 'authorization_cancelled').

messagestring

The detailed error message (e.g. 'Authorization fail: The user has closed the authorization modal before the process was complete.').

Error Handling

The Tenklo Frontend SDK may throw different types of errors during authentication and connection setup. Below is a list of all possible error types along with their meanings:

  1. missing_auth_token

    • Occurs when neither a public key nor a connect session token is provided.
    • Message: "You must specify a public key OR a connect session token (cf. documentation)."
  2. blocked_by_browser

    • Occurs when the browser blocks the popup window for authentication.
    • Message: "Modal blocked by browser"
  3. invalid_host_url

    • Occurs when the provided host URL is invalid.
    • Message: "Invalid URL provided for the Tenklo host."
  4. missing_credentials

    • Occurs when required credentials are not provided.
    • Message: "You must specify credentials."
  5. window_closed

    • Occurs when the authentication window is closed before completing the flow.
    • Message: "The authorization window was closed before the authorization flow was completed"
  6. connection_test_failed

    • Occurs when credential verification fails for certain integrations before the connection is established.
    • Message: "The given credentials were found to be invalid. Please check the credentials and try again."
  7. missing_connect_session_token

    • Occurs when attempting to reconnect without a session token.
    • Message: "Reconnect requires a session token"
  8. resource_capped

    • Occurs when the resource usage limit has been reached.
    • Message: "Reached maximum number of allowed connections for your plan" or "Reached maximum number of connections with functions enabled"
  9. unknown_error

    • Occurs when an unexpected error happens that doesn't fall into other error categories.
    • Message: Varies depending on the underlying error (e.g., network failures, unexpected exceptions)

Error Response Structure

All errors from the Tenklo Frontend SDK follow this structure:

{
    "error": {
        "code": "<error_type>",
        "message": "<detailed_error_message>"
    }
}

Handling Errors

You can handle these errors in your code using the AuthError class.

import { AuthError } from '@nangohq/frontend';

try {
    const result = await nango.auth('<INTEGRATION-ID>', {
        credentials: { apiKey: '<END-USER-API-KEY>' }
    });
} catch (error) {
    if (error instanceof AuthError && error.type === '<error_type>') {
        // Handle specific error
        console.error('Your error message');
    }
}

Questions, problems, feedback? Please reach out in the Slack community.

On this page