TI store API 套件
身份驗證
由于 TI store API 使用 OAuth 2.0 進行保護,因此您必須在發(fā)送請求時于標頭中傳遞訪問令牌。要獲取訪問令牌,請調用 OAuth API,網址為 https://transact.ti.com/v1/oauth/accesstoken。
要使請求取得成功,請注意:
?
- 我們使用客戶端憑據流。
- “Content-Type”必須是“application/x-www-form-urlencoded”。
- 應將請求發(fā)送至上面的相應 URL,而無需任何其他查詢參數。
- 請求參數(grant_type、client_id、client_secret)必須位于請求主體中,以字符串發(fā)送,使用“&”分隔,無需任何進一步編碼。
- 例如:"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.狀態(tài)代碼:" + response.StatusCode); } } catch (Exception e) { Console.WriteLine(e.Message); } // Process the response } } } } }