TI-Store-API-Suite
Authentifizierung
Die TI Store-APIs verwenden OAuth 2.0 für sicheren Zugriff. Um mit ihnen interagieren zu können, benötigen Sie ein Zugriffstoken im Anforderungsheader. Um einen Zugriffstoken zu erhalten, rufen Sie die OAuth-API unter folgender Adresse auf: https://transact.ti.com/v1/oauth/accesstoken.
Abrufen eines Zugriffstokens
Wir verwenden den Client Credentials Flow, um Token zu erhalten. Stellen Sie für eine erfolgreiche Anforderung Folgendes sicher:
- Inhaltstyp: Setzen Sie ihn auf "application/x-www-form-urlencoded”
- Anforderungs-URL: Verwenden Sie die angegebene URL ohne zusätzliche Abfrageparameter.
- Anforderungskörper: Schließen Sie die folgenden Parameter ein (getrennt durch „&“ ohne Kodierung):
- grant_type
- client_id
- client_secret
Beispiel für einen Anforderungskörper:
"grant_type=client_credentials&client_id=[CLIENT_ID]&client_secret=[CLIENT_SECRET]"
Verwenden des Zugriffstokens
- Das Token ist 60 Minuten lang gültig. Überprüfen Sie, ob das Zugriffstoken abgelaufen ist, bevor Sie das Token in anderen APIs verwenden.
- Fügen Sie das Zugriffstoken (auch als Träger-Token bezeichnet) in den Header aller API-Anforderungen ein.
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
Antwort auf eine erfolgreiche Anfrage:
{
"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"
}
Beispielauthentifizierung für Nutzlast und Header einer Zugriffstoken-Anforderung vom Insomnia-Client:
Insomnia Request OAuth2 Einstellungen:
Authentifizierungsbeispiel in VB.net (Framework 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
Authentifizierungsbeispiel in C# (Framework 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
}
}
}
}
}