python – 获取Ebay OAuth令牌
作者:互联网
本周大部分时间我一直在研究ebaySDK.我已经设法将交易和购物API集成到我的项目中.对于交易API,我使用的是Auth n Auth令牌,其有效期长达18个月.我销售API所需的OAuth令牌仅在一天内有效,因此我需要在它到期之前定期获取它.
我按照网站上的文档,甚至尝试在github上查看python repos,但我还没有能够继续前进.这是我的请求代码的快速片段,我做错了什么?
import requests, json, base64, xmltodict
AppSettings = {
'app_id' : 'my_app_id',
'app_secret' : 'my_app_secret',
'dev_id': 'my_dev_id',
'ruName': 'the_ruName_for_my_app'
}
authHeaderData = AppSettings['app_id']+':'+AppSettings['app_secret']
encodedAuthHeader = base64.b64encode(authHeaderData)
session = requests.Session()
print encodedAuthHeader
url = 'https://api.ebay.com/identity/v1/oauth2/token'
session.headers.update({
'Content-Type':'application/x-www-form-urlencoded',
'Authorization':'Basic '+encodedAuthHeader
})
data = {
'grant_type':'client_credentials',
'redirect_uri': AppSettings['ruName'],
'scope':'https://api.ebay.com/oauth/api_scope'
}
response = session.post(url, data=data).json()
print response
我得到的回应是:
{u'error_description': u'client authentication failed', u'error': u'invalid_client'}
我检查了所有的钥匙.我甚至试图通过ebay提供的生产登录获得令牌,但无济于事.我从ebay提供的网址得到的回复是html和js代码(没有JSON或任何数据).
有人遇到过类似的问题吗?我该如何解决这个问题?我提出错误的要求吗?非常感谢任何见解
解决方法:
因为这是跨越eBays文档以找到这个答案的噩梦,我想我会发布解决这个问题的功能.
def getAuthToken():
authHeaderData = AppSettings['client_id']+':'+AppSettings['client_secret']
encodedAuthHeader = base64.b64encode(authHeaderData)
headers = {
"Content-Type" : "application/x-www-form-urlencoded",
"Authorization" : "Basic " + encodedAuthHeader
}
body= {
"grant_type" : "client_credentials",
"redirect_uri" : RUNAME,
"scope" : "https://api.ebay.com/oauth/api_scope"
}
data = urllib.urlencode(body)
tokenURL = "https://api.ebay.com/identity/v1/oauth2/token"
response = requests.post(tokenURL, headers=headers, data=data)
authDict = response.json()
return authDict['access_token']
标签:python,django,oauth,ebay-api 来源: https://codeday.me/bug/20190823/1700287.html