我正在尝试从服务器获取加密令牌oauth2,但响应仍然说错误凭据,
headers = {
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
'grant_type': 'client_credentials',
}
url = "http://172.15.39.95:8080/oauth/token"
params = {"grant_type": "password", "username": "xxxxx", "password": "xxxxxx"}
client_auth = requests.auth.HTTPBasicAuth(CLIENT_ID, CLIENT_SECRET)
x = requests.get(url, params=params, auth=client_auth, headers=headers)
任何帮助将不胜感激
答案 0 :(得分:1)
我想您要使用资源所有者密码凭据授权。请求方法应该是POST,而不是GET(如果我正确读取你的python代码)。请参阅OAuth2 RFC中的示例。 我希望服务器返回“HTTP 405 Method Not Allowed”错误。
您应该删除grant_type: client_credentials
标题 - 您已将grant_type
指定为参数,其值为password
。
由于您没有使用POST请求方法,因此很难说“错误凭据”的含义。当你改变它时,你应该得到更具体的回应。如果您的基本身份验证客户端ID +客户端密码无效,则应该
HTTP/1.1 401 Unauthorized
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"error":"invalid_client"
}
如果您的username
+ password
参数无效,您应该
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"error":"invalid_grant"
}
有关更多错误代码,请参阅OAuth2 RFC。