我正在尝试使用此文档从 eBay API 获取 OAuth 用户访问令牌: https ://developer.ebay.com/api-docs/static/oauth-authorization-code-grant.html
如果我使用,我的代码工作得很好:"grant_type": "client_credentials"
但是当我打电话时:"grant_type": "authorization_code"
我收到此错误:
{'error': 'invalid_grant', 'error_description': '提供的授权授权码无效或已发给其他客户端'}
这是我的代码:
# 1. Send a user to authorize your app
auth_url = ('https://auth.sandbox.ebay.com/oauth2/authorize?client_id=Software-Software-SBX-2dc485992e-65aa6c75&response_type=code&redirect_uri=Soft_ware_-Software-Softwa-zwdqqdbxx&scope=https://api.ebay.com/oauth/api_scope https://api.ebay.com/oauth/api_scope/buy.order.readonly https://api.ebay.com/oauth/api_scope/buy.guest.order https://api.ebay.com/oauth/api_scope/sell.marketing.readonly https://api.ebay.com/oauth/api_scope/sell.marketing https://api.ebay.com/oauth/api_scope/sell.inventory.readonly https://api.ebay.com/oauth/api_scope/sell.inventory https://api.ebay.com/oauth/api_scope/sell.account.readonly https://api.ebay.com/oauth/api_scope/sell.account https://api.ebay.com/oauth/api_scope/sell.fulfillment.readonly https://api.ebay.com/oauth/api_scope/sell.fulfillment https://api.ebay.com/oauth/api_scope/sell.analytics.readonly https://api.ebay.com/oauth/api_scope/sell.marketplace.insights.readonly https://api.ebay.com/oauth/api_scope/commerce.catalog.readonly https://api.ebay.com/oauth/api_scope/buy.shopping.cart https://api.ebay.com/oauth/api_scope/buy.offer.auction https://api.ebay.com/oauth/api_scope/commerce.identity.readonly https://api.ebay.com/oauth/api_scope/commerce.identity.email.readonly https://api.ebay.com/oauth/api_scope/commerce.identity.phone.readonly https://api.ebay.com/oauth/api_scope/commerce.identity.address.readonly https://api.ebay.com/oauth/api_scope/commerce.identity.name.readonly https://api.ebay.com/oauth/api_scope/commerce.identity.status.readonly https://api.ebay.com/oauth/api_scope/sell.finances https://api.ebay.com/oauth/api_scope/sell.item.draft https://api.ebay.com/oauth/api_scope/sell.payment.dispute https://api.ebay.com/oauth/api_scope/sell.item https://api.ebay.com/oauth/api_scope/sell.reputation https://api.ebay.com/oauth/api_scope/sell.reputation.readonly')
webbrowser.open_new(auth_url)
# 2. Users are redirected back to you with a code
url = input('enter url: ')
start_number = auth_res_url.find('code=') + len('code=')
end_number = auth_res_url.find('&expires_in')
auth_code = auth_res_url[start_number:end_number]
# 3. Exchange the code
with open(r'ebay.yaml') as file:
config = yaml.load(file, Loader=yaml.FullLoader)
b64_id_secret = base64.b64encode(bytes(config['api.sandbox.ebay.com']['appid'] + ':' + config['api.sandbox.ebay.com']['certid'], 'utf-8')).decode('utf-8')
response = requests.post("https://api.sandbox.ebay.com/identity/v1/oauth2/token",
headers={
"Content-Type": "application/x-www-form-urlencoded",
"Authorization": "Basic " + b64_id_secret
},
data={
"grant_type": "authorization_code",
"code": auth_code,
"redirect_uri": 'XXXXX HIDDEN XXXXX'
})
token = response.json()
print(token)
重新阅读所有手册和搜索结果,我的大脑很疼。请帮忙!