使用 Ebay 的 REST API - Python 请求生成 access_token 时出错
Error while generating access_token using Ebay 's REST API - Python requests
我第一次尝试使用 ebay REST-API。我只是尝试使用客户端凭据授予请求生成 access_token
。我按照此处的说明进行操作 https://developer.ebay.com/api-docs/static/oauth-client-credentials-grant.html
HTTP method: POST
URL (Sandbox): https://api.sandbox.ebay.com/identity/v1/oauth2/token
HTTP headers:
Content-Type = application/x-www-form-urlencoded
Authorization = Basic <B64-encoded_oauth_credentials>
Request body (wrapped for readability):
grant_type=client_credentials&
redirect_uri=<RuName-value>&
scope=https://api.ebay.com/oauth/api_scope
我收到此错误:{'error': 'invalid_client', 'error_description': 'client authentication failed'}
,我的代码如下所示:
path = 'https://api.sandbox.ebay.com/'
app_json = 'application/json'
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': base64.b64encode(b'Basic CLIENT_ID:CLIENT_SECRET')
}
payload = 'grant_type=client_credentials&redirect_uri=Searchez&scope=https://api.ebay.com/oauth/api_scope'
def get_oath_token():
url = 'https://api.sandbox.ebay.com/identity/v1/oauth2/token'
r = requests.post(url, headers=headers, data=payload)
print(r.json())
get_oath_token()
我配置错了什么?谢谢。
在您的代码中,我可以看到沙箱端点 URI,但在请求正文范围内,您使用的是生产 URL,而不是沙箱
您使用的是 base64 编码 "Basic ",不应该。
文档说只需对您的客户端 ID +“:”+ 客户端密码进行编码,然后单独留下单词 "Basic" 和后面的 space。
我第一次尝试使用 ebay REST-API。我只是尝试使用客户端凭据授予请求生成 access_token
。我按照此处的说明进行操作 https://developer.ebay.com/api-docs/static/oauth-client-credentials-grant.html
HTTP method: POST
URL (Sandbox): https://api.sandbox.ebay.com/identity/v1/oauth2/token
HTTP headers:
Content-Type = application/x-www-form-urlencoded
Authorization = Basic <B64-encoded_oauth_credentials>
Request body (wrapped for readability):
grant_type=client_credentials&
redirect_uri=<RuName-value>&
scope=https://api.ebay.com/oauth/api_scope
我收到此错误:{'error': 'invalid_client', 'error_description': 'client authentication failed'}
,我的代码如下所示:
path = 'https://api.sandbox.ebay.com/'
app_json = 'application/json'
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': base64.b64encode(b'Basic CLIENT_ID:CLIENT_SECRET')
}
payload = 'grant_type=client_credentials&redirect_uri=Searchez&scope=https://api.ebay.com/oauth/api_scope'
def get_oath_token():
url = 'https://api.sandbox.ebay.com/identity/v1/oauth2/token'
r = requests.post(url, headers=headers, data=payload)
print(r.json())
get_oath_token()
我配置错了什么?谢谢。
在您的代码中,我可以看到沙箱端点 URI,但在请求正文范围内,您使用的是生产 URL,而不是沙箱
您使用的是 base64 编码 "Basic ",不应该。 文档说只需对您的客户端 ID +“:”+ 客户端密码进行编码,然后单独留下单词 "Basic" 和后面的 space。