我目前在使用OAuth方法来获取授权码授权流的令牌时遇到了问题。我正在开发一个python应用程序,以便在我的eBay商店上自动执行某些功能。我已经设法通过客户端凭据授予流获得了访问权限,但在我的情况下,授权还不够。
现在,我想使用授权码授权流获取访问令牌,但在第一步(“从文档中获取第三方的同意”)中无法获取授权码。我试图在我的浏览器中获得这个授权码,然后在我的应用程序中使用它,但我遇到了一个安全错误,告诉我这个令牌已经被使用了,这就是安全性。
我知道我需要发送我的凭据以便获得此授权码,但我不知道如何处理用户授予权限的redirectUrl。以下是我所做的工作:
def GetAuthToken():
headers = {
'client_id' : 'xxxxxxx',
'redirect_uri' : 'xxxxx',
'response_type' : 'code',
'scope' : 'https://api.ebay.com/oauth/api_scope/sell.inventory',
}
tokenURL = 'https://auth.ebay.com/oauth2/authorize'
response = requests.get(tokenURL, headers=headers)
print(response)
authDict = response.json()
print(authDict)
GetAuthToken()我得到了这个错误:
Response [200]
{'error_id': 'unauthorized_client', 'error_description': 'The OAuth client was not found.', 'http_status_code': 401}考虑到API正在等待凭证,这是正常的。我的问题是:我如何使用我的python程序进行身份验证才能获得这个授权码?在文档(https://developer.ebay.com/api-docs/static/oauth-consent-request.html)中,它指定用户需要手动登录才能获得第一步授权码。但是,我需要自动执行此身份验证。
我应该如何将凭据参数发送到API,以便自动执行此步骤?
我目前正在查看Python OAuth2库,看看我能用它做些什么,我非常确定它会有所帮助。如果我找到了自动化的方法我会让你们知道的。
无论如何,提前感谢您的支持!:)
发布于 2019-01-04 03:53:42
在典型的OAuth 2.0流程中,授权应用程序的实际最终用户需要登录并同意应用程序获得访问权限。一旦在回调URL中获得authorization_code,就可以将其交换为最初在授权中请求的作用域的刷新和访问令牌。
https://developer.ebay.com/api-docs/static/oauth-authorization-code-grant.html
eBay还有一个简单的库,它负责生成授权URL,将代码转换为令牌等,可在Github中使用
这里也有一个很好的答案- eBay oauth token and refresh tokens
https://stackoverflow.com/questions/53517761
复制相似问题