【質問】FedEx API で追跡情報の取得
解決したいこと
現在、Pythonを使用してFedExのWeb APIであるTrack APIのTrack by Tracking Numberの追跡情報を取得する実装を行っているところですが、色々と調べてベアラートークンまでは取得ができましたが、その後は欲しい情報のResponseがうまく取得できずとして返ってきます。下記のFedEx開発者ポータルサイトのTrack APIのドキュメントを参照して、コードを書いたのですがうまく取得ができませんでした。
Pythonのスキルとしてはまだ学び始めて1年程度で、APIについては2週間くらい前からいろいろと調べて実装を試みておりましたが、OAuth2.0やJson等の知識も不足しているという点は否めません。
また海外のサイトもいろいろと探してみましたが解決策が見つからずといった状態です。アドバイスを頂けないでしょうか。
発生している問題・エラー
{'errors': [{'code': 'BAD.REQUEST.ERROR',
'message': 'The given JWT is invalid. Please modify your request '
'and try again.'}],
'transactionId': 'cb91a977-d5dc-4a46-818a-9f2320d1179b'}
エラーコードは400になります。
<Response [400]>
該当するソースコード
尚、client_idとclient_secret、trackingNumberの値はダミーを記載させていただいております。
import requests
import json
headers = { "Content-Type" : "application/x-www-form-urlencoded" }
data = {
"grant_type": "client_credentials",
"client_id": "XXXXXXXXXXXXXXXXXX",
"client_secret": "XXXXXXXXXXXXXXXXXX"
}
oauth_url = "https://apis.fedex.com/oauth/token"
r = requests.post(oauth_url, data=data, headers=headers)
bearer_token = r.json()["access_token"]
import pprint
url = "https://apis-sandbox.fedex.com/track/v1/trackingnumbers"
headers = {"content-type": "application/json",
'X-locale': "en_US",
"Authorization": "Bearer {}".format(bearer_token)}
payload = {"trackingInfo": [{"trackingNumberInfo": {"trackingNumber": "XXXXXXXXXXXXXXXXXX"}}],"includeDetailedScans": True}
response = requests.request('GET', url, data=payload, headers=headers)
data = json.loads(response.text)
pprint.pprint(data)
自分で試したこと
ドキュメント内には参照情報として下記2つのurlがあり、どちらも試してみましたが、前者はエラーコード400(上記で記載したエラー内容)で後者は405が返ってきました。405のメッセージは以下の通りです。
"https://apis-sandbox.fedex.com/track/v1/trackingnumbers"
”https://apis.fedex.com/track/v1/trackingnumbers”
{'errors': [{'code': 'METHOD.NOT.ALLOWED.ERROR',
'message': 'We received a requested method that is not supported. '
'Please modify your request and try again.'}],
'transactionId': 'baa20dbe-70a6-46dd-952d-a6d931476cf4'}
urlを変えてみる以外にも追跡番号を変更してみたりしてみたのですが、追跡情報の取得ができませでした。
ウェブ上でもFedEx APIに関する情報が見つけることができませんでしたので、アドバイス頂けると有難いです。