![](/img/trans.png)
[英]What is Token Based Authentication, How to access REST API GET request using it? NETSUITE API
[英]Netsuite REST Web Services API GET Request, Outside of Postman
嗨堆棧溢出社區,提前感謝您的幫助:
社區問題:不是重新發明 oauth 輪,是否有任何提示/最佳實踐可以在我的 Python GET 請求 Netsuite 的新 API(REST Web 服務;有關問題的上下文)中創建我自己的 oauth 簽名/隨機數? 似乎其他在這方面取得成功的人已經通過反復試驗完成了這也是我的計划,但理想情況下,我希望錯誤更少,而不是重新發明輪子。 任何提示、技巧、想法都非常受歡迎。 請參閱下面的上下文
內容:嘗試使用 Netsuite 全新的 REST API(REST Web 服務)發出 GET 請求。 這是一個不同於他們的 SOAP/RESTlets 的 API。
如何:通過在 Visual Studio Code 中編寫 Python 腳本。 我成功地在 Postman 中提出請求。 我將代碼復制到 Postman 用來發出成功 GET 請求並收到 401 響應的 Visual Studio Code 中(見下文)。
遇到的問題:我收到 401 響應,登錄無效。 沒有關於如何在 Postman 之外與這個新的 REST API 成功交互的官方 Netsuite 文檔,因此在閱讀 StackOverflow 和其他博客/出版物后,我似乎需要創建自己的 oauth_signature、oauth_timestamp 和 oauth_nonce。
郵遞員 GET 請求代碼:
import requests
url = "https://123456-sb1.suitetalk.api.netsuite.com/services/rest/query/v1/workbook/custworkbook12345/result"
payload = {}
headers = {
'Authorization': 'OAuth realm="123456_SB1",oauth_consumer_key="123456789101112131415",oauth_token="123456789101112131415",oauth_signature_method="HMAC-SHA256",oauth_timestamp="123456789",oauth_nonce="123456789",oauth_version="1.0",oauth_signature="123456789101112131415"',
'Cookie': 'NS_ROUTING_VERSION=LAGGING'
}
response = requests.request("GET", url, headers=headers, data = payload)
print(response.text.encode('utf8'))
提前致謝!
感謝 Josh 的推薦(請參閱對我的原始問題的評論)我成功地使用 oauthlib 的 oauth1 客戶端在 Visual Studio Code 中發送請求。 nonce 和簽名看起來與 Postman 在他們的代碼片段中顯示的有點不同,但它確實有效。 對於嘗試使用 Netsuite 的 REST Web 服務進行相同操作的任何人,我建議走這條路線。
我發送成功 GET 請求的代碼:
import requests
import oauthlib.oauth1
import json
url = "https://12345-sb1.suitetalk.api.netsuite.com/services/rest/query/v1/dataset/custdataset1/result"
payload = {}
client = oauthlib.oauth1.Client('consumer key', client_secret='12345',
resource_owner_key='12345', resource_owner_secret='12345', realm='12345_SB1',signature_method="HMAC-SHA256")
url, headers, body = client.sign('https://4635201-sb4.suitetalk.api.netsuite.com/services/rest/query/v1/dataset/custdataset1/result')
response = requests.request("GET", url, headers=headers, data = payload)
print(response.text.encode('utf8'))
一些額外的有用說明 -
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.