我试图找出Auth0的工作原理。到目前为止,我并不幸运。我想要实现的是简单的:POST到oauth / token端点并接收一个令牌作为回报。卷曲这没问题。我可以卷曲 - 请求POST [...]并收到令牌就好了。当我尝试使用python和pythons请求模块执行此操作时,我收到一条错误消息,指出我未获得授权。数据完全相同,我仔细检查。这是我的python代码:
import json, requests
endpoint = 'https://mydomain.auth0.com/oauth/token'
data = {
'grant_type': 'password',
'username': 'myuser',
'password': 'mypassword',
'audience': '',
'scope': 'read:sample',
'client_id': 'myclientid',
'client_secret': 'myclientsecret'
},
headers = {'content-type': 'application/json'}
response = requests.post(url=endpoint, data=json.dumps(data), headers=headers)
print("STATUS: ", response.status_code)
print("Response: ", response.json())
工作卷曲请求:
curl --request POST \\
--url 'https://mydomain.auth0.com/oauth/token' \\
--header 'content-type: application/json' \\
--data '{"grant_type":"password","username": "myuser","password": "mypassword","audience": "", "scope": "read:sample", "client_id": "myclientid", "client_secret": "myclientsecret"}'
我还尝试将我的python代码中的用户代理设置为" curl / 7.51.0",但这也不起作用:D
我对任何指针感到满意!
编辑:
我可耻地承认我之前没有使用相同的用户名。尽管我无法用python代码授权自己,但这并没有改变这个事实。 @ cricket_007建议的SDK工作正常。我发现这有点奇怪但很好。
答案 0 :(得分:1)
我认为这实际上是您使用requests.post()
url 不是关键字参数:
response = requests.post(endpoint, data=json.dumps(data), headers=headers)
应该在这里工作......