Get a destination token
Before a protected destination can be used a token is needed.
The lifetime of a destination token is 60 minutes. After that a new token needs to be fetched.
Register application
Before a token can be requested an application needs to be configured for the destination. This is done in the Destinations section in Studio under the tab Applications. A display name needs to be provided for the application registration. After creation the secret will be shown. Make sure to copy it as it will not be possible to retrieve later, However, it is possible to reset the secret.
The application tab will only be displayed if the destination is protected.
Generate token
To generate a token the following is needed:
- Destination id: found under the settings tab in Destination
- Client id: from application registration
- Client secret: from application registration
By doing a POST request to the url https://destinations.occtoo.com/destinations/[@DestinationId]/token
and providing a body of the client id and client secret a new token is retrieved.
/*Token request body*/
{
clientId : "@ClientId",
clientSecret : "@ClientSecret"
}
Code samples
- C#
- JavaScript
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
var baseAddress = "https://destinations.occtoo.com/destinations/";
var destinationClientId = "@destination_clientId@";
var destinationSecret = "@destination_secret@";
var destinationId = "@destination_id@";
var httpClient = new HttpClient();
httpClient.BaseAddress = new Uri(baseAddress);
dynamic credentials = new { clientId = destinationClientId, clientSecret = destinationSecret };
var content = new StringContent(JsonConvert.SerializeObject(credentials), Encoding.UTF8, "application/json");
var tokenResponse = await httpClient.PostAsync($"{destinationId}/token", content);
var tokenResponseContent = await tokenResponse.Content.ReadAsStringAsync();
var tokenDocument = System.Text.Json.JsonSerializer.Deserialize<JsonDocument>(tokenResponseContent);
var token = tokenDocument.RootElement.GetProperty("accessToken").GetString();
// Example assumes you've patched fetch with node-fetch:
// npm install node-fetch
// globalThis.fetch = await import('node-fetch').then(m => m.default)
(async () => {
const baseAddress = "https://destinations.occtoo.com/destinations/";
const destinationClientId = "@destination_clientId@";
const destinationSecret = "@destination_secret@";
const destinationId = "@destination_id@";
function getToken() {
return fetch(baseAddress + destinationId + "/token", {
method: 'POST',
headers: {
ContentType: 'application/json',
},
body: JSON.stringify({
clientId: destinationClientId,
clientSecret: destinationSecret
})
});
}
})();
Do not include secrets in frontend JavaScript code or add to source control. Remove secrets that are no longer needed.