Django OAuth Toolkit安装问题

时间:2014-03-01 18:14:30

标签: django oauth oauth-2.0 django-rest-framework

我正在关注使用rest框架设置Django OAuth Toolkit的https://django-oauth-toolkit.readthedocs.org/en/0.7.0/rest-framework/getting_started.html

与第4步一样:https://django-oauth-toolkit.readthedocs.org/en/0.7.0/rest-framework/getting_started.html#step-4-get-your-token-and-use-your-api

它说得到令牌,我们需要做一个卷曲:

curl -X POST -d "grant_type=password&username=<user_name>&password=<password>" http://<client_id>:<client_secret>@localhost:8000/o/token/

我对此过程的实际curl请求看起来像这样(对于已经生成的client_id和client_secret)

curl -X POST -d "grant_type=password&username=test&password=test" http://mbqvonqO7sI1lrh87uDd.C1U..NbKTb@0=eCM8Fl::2O=!0ZjE5UCha0UW?Oie-XCVUn;3XtmjT2SbFpzDJeM@Bn3.vPS!KLoDqVz7L-3.FfjP9v6yYyu2ghxObnIdIWppu=J@RPxPOfU@Q7KPt7da.?Bg0o5kCt5tY:wamsF@127.0.0.1:8000/o/token/

没有返回任何响应并给出错误“bash:!0:event not found”

打电话有错吗?

3 个答案:

答案 0 :(得分:2)

问题是在注册申请期间生成的“客户端ID”和“客户端密钥”(http://django-oauth-toolkit.readthedocs.org/en/0.7.0/rest-framework/getting_started.html#step-3-register-an-application

“客户端ID”和“客户端密码”包含特殊字符,这些字符不能在文档中以上述方式与curl请求一起使用。

我们可以按照Almalki建议的方式使用它:

curl -X POST -d "client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=password&username=YOUR_USERNAME&password=YOUR_PASSWORD" http://localhost:8000/o/token/

答案 1 :(得分:1)

您可以将client_id和client_secret设置为POST参数:

curl -X POST -d "client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=password&username=YOUR_USERNAME&password=YOUR_PASSWORD" http://localhost:8000/o/token/

答案 2 :(得分:0)

我遇到与OP相同的问题,这是唯一对我有用的解决方案:

curl -X POST -d 'grant_type=password&username=<username>&password=<password>' --user '<client_id>:<client_secret>' 'http://localhost:8000/o/token/'

我在Django OAuth Toolkit's Github issue #167找到了这个解决方案。那里有一个很好的解释。