Suite API de TI Store
Autenticación
Las API de TI store utilizan OAuth 2.0 para un acceso seguro. Para interactuar con ellas, necesitará un token de acceso incluido en el encabezado de la solicitud. Para obtener un token de acceso, llame a la API de OAuth a https://transact.ti.com/v1/oauth/accesstoken.
Obtener un token de acceso
Utilizamos el flujo de credenciales del cliente para obtener tokens. Asegúrese de lo siguiente para que la solicitud sea correcta:
- Tipo de contenido: Configúrelo en "application/x-www-form-urlencoded”
- URL de la solicitud: Utilice la URL proporcionada sin parámetros de consulta adicionales.
- Cuerpo de la solicitud: Incluya estos parámetros (separados por “&” sin codificación):
- grant_type
- client_id
- client_secret
Ejemplo de cuerpo de solicitud:
"grant_type=client_credentials&client_id=[CLIENT_ID]&client_secret=[CLIENT_SECRET]"
Uso del token de acceso
- El token es válido durante 60 minutos. Antes de utilizar el token en otras API, compruebe si el token de acceso ha caducado.
- Incluya el token de acceso (también llamado token de portador) en el encabezado de todas las solicitudes de la API.
curl --request POST \
--url https://transact.ti.com/v1/oauth/accesstoken \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data grant_type=client_credentials \
--data client_id=XXXXXXXXXXXXXXXXX \
--data client_secret=XXXXXXXXXXXXXXXXX
Respuesta a una solicitud correcta:
{
"access_token": "MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3",
"token_type": "bearer",
"expires_in": 3599,
"scope": "",
"application_name": "app_name",
"developer.email": "api-portal@list.ti.com",
"issued_at": "1582220284531",
"client_id": "IwOjYzmalmM2YxOT15MGE3YmNm4DFkyTVk"
}
Ejemplo de carga útil de autenticación y encabezado de una solicitud de token de acceso del cliente de Insomnia:
Solicitud de Insomnia, configuración de OAuth2:
Ejemplo de autenticación en VB.net (estructura 4.6.1):
Imports System.Net
Imports System.IO
Imports System.Text
Imports Newtonsoft.Json.Linq
Private Function GetToken() as string
Dim URL As String = "https://transact.ti.com/v1/oauth/accesstoken"
Dim ClientID As String = "{myTI API Key}"
Dim ClientSecret As String = "{myTI API Secret}"
Dim Data As String = $"grant_type=client_credentials&client_id={ClientID }&client_secret={ClientSecret}"
Dim request As HttpWebRequest = DirectCast(WebRequest.Create(URL), HttpWebRequest)
request.Method = "POST"
request.ContentType = "application/x-www-form-urlencoded"
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(Data)
request.ContentLength = byteArray.Length
Dim dataStream As Stream = request.GetRequestStream()
dataStream.Write(byteArray, 0, byteArray.Length)
dataStream.Close()
Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
dataStream = response.GetResponseStream()
Dim reader As New StreamReader(dataStream)
Dim result As String = reader.ReadToEnd()
reader.Close()
dataStream.Close()
response.Close()
Dim parsejson As JObject = JObject.Parse(result)
return parsejson.SelectToken("access_token").ToString
End Function
Ejemplo de autenticación en C# (estructura 4.6.1):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net.Http;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
GetToken();
}
static async Task GetToken()
{
string apiUrl = "https://transact.ti.com/v1/oauth/accesstoken";
// Create the HttpClient
using (HttpClient client = new HttpClient())
{
// Prepare the data to send
var formData = new FormUrlEncodedContent(new[]
{
new KeyValuePair("grant_type", "client_credentials"),
new KeyValuePair("client_id", "{myTI API Key}"),
new KeyValuePair("client_secret", "{myTI API Secret}"),
// Add more key-value pairs as needed
});
// Prepare the PUT request
using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Put, apiUrl))
{
request.Content = formData;
try
{
request.Headers.Add("Accept", "application/json"); // Optional, set the desired response format}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
// Send the request and get the response
try
{
HttpResponseMessage response = await client.SendAsync(request);
if (response.IsSuccessStatusCode)
{
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine("Request successful. Response: " + responseBody);
}
else
{
Console.WriteLine("Request failed. Status code: " + response.StatusCode);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
// Process the response
}
}
}
}
}