TI store API 제품군

인증

TI store API는 OAuth 2.0을 사용하여 보호되기 때문에 요청을 보낼 때 헤더를 통해 액세스 토큰을 전달해야 합니다. 액세스 토큰을 얻으려면 https://transact.ti.com/v1/oauth/accesstoken에서 OAuth API를 호출합니다.

성공적인 요청의 경우 다음 사항에 유의하십시오.
 

  • 클라이언트 자격 증명 흐름을 사용합니다.
  • "Content-Type"(콘텐츠 유형)은 반드시 "application/x-www-form-urlencoded"여야 합니다.
  • 추가 쿼리 매개 변수 없이 위의 해당 URL로 요청을 보내야 합니다.
  • 요청 매개 변수(grant_type, client_id, client_secret)는 추가 인코딩 없이 "&"로 구분된 문자열로 전송된 요청 본문에 있어야 합니다.
  • 예: "grant_type=client_credentials&client_id=[CLIENT_ID]&client_secret=[CLIENT_SECRET]"
  • 액세스 토큰은 60분 동안 유효합니다. 다른 API에서 토큰을 사용하기 전에 액세스 토큰이 만료되었는지 확인하십시오.
  • 액세스 토큰(또는 전달자 토큰)은 모든 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


성공한 요청에 대한 응답:

{ "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" }


Insomnia 클라이언트로부터의 액세스 토큰 요청 인증 페이로드 및 헤더 예:

 


Insomnia 요청 OAuth2 설정:

 


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

 

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<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. 응답: " + responseBody); } else { Console.WriteLine("Request failed. 상태 코드: " + response.StatusCode); } } catch (Exception e) { Console.WriteLine(e.Message); } // Process the response } } } } }