Suite API de TI Store

Autenticación

Dado que las API de TI store están protegidas mediante OAuth 2.0, debe pasar un token de acceso en el encabezado al enviar una solicitud. Para obtener un token de acceso, llame a la API de OAuth a https://transact.ti.com/v1/oauth/accesstoken.

Para realizar una solicitud correcta, tenga en cuenta que:
 

  • Utilizamos el flujo de credenciales de cliente.
  • El "tipo de contenido" debe ser "application/x-www-form-urlencoded".
  • La solicitud se debe enviar a la URL correspondiente anterior sin ningún parámetro de consulta adicional.
  • Los parámetros de solicitud (grant_type, client_id y client_secret) deben estar presentes en el cuerpo de la solicitud, enviarse en una cadena y estar separados por "&" sin ninguna codificación posterior.
  • Por ejemplo: "grant_type=client_credentials&client_id=[CLIENT_ID]&client_secret=[CLIENT_SECRET]"
  • El token de acceso es válido durante 60 minutos. Antes de utilizar el token en otras API, compruebe si el token de acceso ha caducado.
  • El token de acceso (o token de portador) se debe pasar en el encabezado de todas las solicitudes de 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<string, string>("grant_type", "client_credentials"), new KeyValuePair<string, string>("client_id", "{myTI API Key}"), new KeyValuePair<string, string>("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. Respuesta: " + responseBody); } else { Console.WriteLine("Request failed. Código de estado: " + response.StatusCode); } } catch (Exception e) { Console.WriteLine(e.Message); } // Process the response } } } } }