2014-11-21 39 views
2

我有一個問題,我有一個使用Django OAuth Toolkit的django應用程序,使用授權碼流時我無法從服務器獲取訪問令牌。隱式流程正常工作。我沒有發現任何關於我的問題在堆棧上,所以我真的很抱歉,如果這是另一個問題的重複。Django OAuth Toolkit invalid_grant錯誤

我可以使用此URL進行授權並獲取請求回來,如果我正確理解請求令牌已過去的代碼參數。

http://mydomain.se/o/authorize?scope=read+write&state=kalle&redirect_uri=mycallbakurls&response_type=code&client_id=myclientid

當我再嘗試做一個帖子http://mydomain.se/o/token/ 有:

grant_type = authorization_code 
code = code from authorize call 
client_id = my clientId 
client_secret = my client secret 
redirect_uri = my callback url 

我得到"error" : "invalid_grant"回來。

有人能請我指出正確的方向是什麼問題?

問候馬庫斯

回答

1

我發現我不能單獨做的請求。當我建立自己的客戶端並測試所有爲我工作的很好。

+0

嗨!我面對完全相同的問題。你能幫我解釋一下你是如何解決它的?我已經嘗試了很多東西,而且我堅持這個問題): – 2017-09-26 20:53:01

1

我遇到同樣的問題,當我的客戶端類型是confidential而不是publico/application。這是我解決它的方法。

  1. 失敗的錯誤消息是{"error": "invalid_grant"}

curl -X POST -d "client_id=17U5rPQM1HDtF3hR8sIRP6pmzn033EbnwJJ6lNCx& client_secret=D6bSgR8qyIwDl5SyF4kJ0wBJq56NXMUY9LVjD6NZTxnAh4ylTD2YBJxDBaLahpabZMGowWpVTYn6UW8Yq1GB6nAwm7euXZZxXaCxQLKK2KDNrfz4JSavFCKekc1LOCQz&grant_type=authorization_code&code=EaBVzVEjqbsU0GKl5gXK7ArrfsSiTJ&redirect_uri=http%3A%2F%2Flocalhost%2Foauth_client%2F" http://localhost:8080/o/token/
{"error": "invalid_grant"}

  • 然後改變了我的客戶端類型和public得到Success
  • curl -X POST -d "client_id=17U5rPQM1HDtF3hR8sIRP6pmzn033EbnwJJ6lNCx&client_secret=D6bSgR8qyIwDl5SyF4kJ0wBJq56NXMUY9LVjD6NZTxnAh4ylTD2YBJxDBaLahpabZMGowWpVTYn6UW8Yq1GB6nAwm7euXZZxXaCxQLKK2KDNrfz4JSavFCKekc1LOCQz&grant_type=authorization_code&code=1ZxQjLN4QbpjaWgbztnOIe3K4bgxKj&redirect_uri=http%3A%2F%2Flocalhost%2Foauth_client%2F" http://localhost:8080/o/token/
    {"access_token": "KstIqSnt9Mj4ITmCGRJpTYW3W59nRv", "token_type": "Bearer", "expires_in": 36000, "refresh_token": "uJzJal9YSpirSax6vW2Di43ojRGvRV", "scope": "read write groups"}

  • 再次變回Confidential和在捲曲請求發送我的用戶名和密碼。
  • curl -X POST -d "client_id=17U5rPQM1HDtF3hR8sIRP6pmzn033EbnwJJ6lNCx&client_secret=D6bSgR8qyIwDl5SyF4kJ0wBJq56NXMUY9LVjD6NZTxnAh4ylTD2YBJxDBaLahpabZMGowWpVTYn6UW8Yq1GB6nAwm7euXZZxXaCxQLKK2KDNrfz4JSavFCKekc1LOCQz&grant_type=authorization_code&code=UJnq1xfKULOUD0m2Oxb26NYmnuxKMn&redirect_uri=http%3A%2F%2Flocalhost%2Foauth_client%2F" -u'admin:pass' http://localhost:8080/o/token/
    {"access_token": "VhMgx59x4PHUPOgSTKMGewsM8JfT58", "token_type": "Bearer", "expires_in": 36000, "refresh_token": "T0BhP1lFvyiS9c5rH6xHqt4uBItAS1", "scope": "read write groups"}

    2

    如果代碼已過期就會發生這種情況。默認情況下它們很快就會過期。您可以在Grants下的Django管理員中查找您的代碼,並將過期日期更改爲將來。

    相關問題