python - 在 Python 中获取 eBay restful 的最终用户令牌
问题描述
目前我正在使用带有 Python 的 eBay 交易 API。感谢:https ://github.com/timotheus/ebaysdk-python
我使用https://github.com/luke-dixon/django-ebay-accounts为用户获取令牌。
现在,我想使用 Restful API ( https://developer.ebay.com/docs#Acc )。我不认为我可以使用我已经拥有的令牌。所以,感谢Getting an Ebay OAuth Token get one。但我认为我遗漏了一些东西,因为在此过程中我无法包含用户信息(名称/密码),因此,例如https://api.ebay.com/sell/fulfillment/v1/order?limit=10
返回:
{
"errors": [{
"errorId": 1100,
"domain": "ACCESS",
"category": "REQUEST",
"message": "Access denied",
"longMessage": "Insufficient permissions to fulfill the request."
}]
}
知道如何为用户获取令牌吗?
只是代码片段使事情更清楚:
AppSettings = {
'app_id': EBAY_PRODUCTION_APPID,
'app_secret': EBAY_PRODUCTION_CERTID,
'dev_id': EBAY_PRODUCTION_DEVID,
'ruName': EBAY_PRODUCTION_RU_NAME
}
authHeaderData = AppSettings['app_id'] + ':' + AppSettings['app_secret']
encodedAuthHeader = base64.b64encode(authHeaderData.encode())
headers = {
"Content-Type": "application/x-www-form-urlencoded",
"Authorization": "Basic ".encode() + encodedAuthHeader
}
body = {
"grant_type": "client_credentials",
"redirect_uri": settings.EBAY_PRODUCTION_RU_NAME,
"scope": "https://api.ebay.com/oauth/api_scope"
}
data = urllib.parse.urlencode(body)
tokenURL = "https://api.ebay.com/identity/v1/oauth2/token"
response = requests.post(tokenURL, headers=headers, data=body)
authDict = response.json()
所以我需要的运行请求是:
r = requests.get("https://api.ebay.com/sell/fulfillment/v1/order?limit=10",
headers={"Authorization": "{}".format(authDict['access_token']),
"Content-Type": "application/json",
"X-EBAY-C-MARKETPLACE-ID": "EBAY_UK",
"Accept": "application/json"
})
解决方案
据此,我相信您应该使用以下授权标头:
headers['Authorization'] = "Bearer " + USER_ACCESS_TOKEN
这个页面 USER_ACCESS_TOKEN
上生成的海量令牌在哪里。
它看起来像这样:
'v^1.1#i^1#p^3#f^0#I^3#r^0#t^ ...
...
...
...
... bfxr8BJtphi2M/oo2xpYo2hiMWxmZt4fVzS7qe2tMXUSAAA='
您使用的Authorization
是未链接到特定用户帐户的请求(搜索结果、项目的元数据等)。要发出针对特定用户的请求(例如订单或库存更新),您必须通过他们的USER_ACCESS_TOKEN
.
如果您需要帮助USER_ACCESS_TOKEN
让我知道,我会更新。
请注意,我一直在尝试做你正在做的事情大约 6 个小时,但仍然没有弄清楚,所以我对这个答案没有信心。
希望这可以帮助。如果您确实弄清楚了,您应该发布一个答案,以便其他人也可以(即我自己 xD)。
eBay 绝对赢得了api 文档历史上最差 api 文档的金奖……
推荐阅读
- android - 如何从 sqlite db 检索转换为字节数组的图像并将其放置在 RecyclerView 中?
- android - setMargins 方法不适用于 Android 6
- javascript - 尽管未单击按钮,但按钮 onclick 事件正在执行 [JavaScript]
- java - 泽西岛:HTTP 状态 500
- swiftui - SwiftUI 中按钮太多发生的问题
- file - 如何在 Linux 中批量重命名文件并将文件名中的第一个单词与第二个单词交换?
- python - 如何为 pybind11 正确构建活页夹
- c++ - 如何强调该功能可能会抛出?
- ios - 有没有办法使用 EC2 作为在 Monaca 上开发的 iOS 应用程序的后端?
- javascript - 停止等待 setTimeOut 函数