- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 Django OAuth Toolkit,并且成功创建了sign_up 调用 - 这反过来给了我以下响应:
{
"username": "boban16",
"client_id": "sxFB8WOd5qupdyp5c4pjJHXAQQFPVCW7FKA3SUmy",
"client_secret": "3nUreBDpx9cCSEeVyOhpXZ76Om0keOxFwK2rRQJNK5wvYuA1tUF37sH0Of473wCgeJ3tCmflN9kPnP9VkgepWxrARC6iimqI6y34pyVU7otlcXHjS2SSOmsP2c0XNxrA"
}
所以,我现在尝试使用 Postman 应用程序进行调用来生成 token - 请求如下所示:
这是响应:
{
"error_description": "Invalid credentials given.",
"error": "invalid_grant"
}
这是我来自 urls.py 的代码
urlpatterns = patterns('',
url(r'^sign_up/$', SignUp.as_view(), name="sign_up"),
url(r'^login/$', Login.as_view(), name="login"),
url(r'^o/', include('oauth2_provider.urls', namespace='oauth2_provider')),
)
这是settings.py的一部分
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
# 'rest_framework.authentication.BasicAuthentication',
'oauth2_provider.ext.rest_framework.OAuth2Authentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.AllowAny',
),
}
我不确定问题是什么以及如何解决它。有人建议如何使其发挥作用吗?非常感谢!
--------更新--------
我终于得到了一些回应:
curl -v http://127.0.0.1:8000/o/token/ -X POST -u "<client_id>:<client_secret>" -d "grant_type=client_credentials"
这是响应:
* Hostname was NOT found in DNS cache
* Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 8000 (#0)
* Server auth using Basic with user 'JNBUdgUJ44ndu49yeokHxU0ZUNfIbpdESC8PVTQU'
> POST /o/token/ HTTP/1.1
> Authorization: Basic Sk5CVWRnVUo0NG5kdTQ5eWVva0h4VTBaVU5mSWJwZEVTQzhQVlRRVTpaQVNwZ0xLY3didXA2ajJ2YlJqakc1WlFZenpWWFZWQU5HcHJ0WWZVNnIya2VpUkEzZW9vNlh5M0tSMENkOGpWN3FLT2xFTENoTHZTUk5vTzBkUE5YNGdoRXdvRnB4UDNKbHdxY0FqRkpIV0RmSkJzYnpmNjJ5dE5DaEFVM29RcA==
> User-Agent: curl/7.37.1
> Host: 127.0.0.1:8000
> Accept: */*
> Content-Length: 29
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 29 out of 29 bytes
* HTTP 1.0, assume close after body
< HTTP/1.0 401 UNAUTHORIZED
< Date: Sat, 13 Jun 2015 16:14:19 GMT
< Server: WSGIServer/0.2 CPython/3.4.3
< Content-Type: application/json
< Cache-Control: no-store
< Pragma: no-cache
< X-Frame-Options: SAMEORIGIN
<
* Closing connection 0
{"error": "unauthorized_client"}
正如您在响应中看到的 - 我获得了授权 token ,但它最后说 - 未经授权的客户端。这样可以吗?谢谢!
最佳答案
我发现了问题。
自动创建应用程序的 post_save 信号存在问题。
def create_auth_client(sender, instance=None, created=False, **kwargs):
"""
Intended to be used as a receiver function for a `post_save` signal
on a custom User model
Creates client_id and client_secret for authenticated users
"""
if created:
Application.objects.create(user=instance,
client_type=Application.CLIENT_CONFIDENTIAL,
authorization_grant_type=Application.GRANT_CLIENT_CREDENTIALS)
# TODO
post_save.connect(create_auth_client, sender=User)
这是现在正确的解决方案。然后您可以使用这些调用来进行sign_up/获取oauth2 token :
curl -X POST -F "username=test1" -F "password=test1" http://127.0.0.1:8000/sign_up/
curl -X POST -d "grant_type=client_credentials" -u "<client_id>:<client_secret>" http://127.0.0.1:8000/o/token/
关于python - Django OAuth2 无效 grant_type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30820406/
我想了解 grant_type=client_credentials 之间的区别和 grant_type=password在Authentication或在 OAuth2 Flow概念。 我正在关注以
我在第一次尝试请求访问 token 时收到 {"error_description":"Missing grant_type parameter value","error":"invalid_req
我向我的领域添加了自定义 OIDC 身份提供商,并且想要使用直接访问授权流程(或 grant_type=password),但这不起作用。 Keycloak可以吗? 当尝试使用授权代码流程时,一切正常
我在我的本地机器上独立运行了 keycloak。 我创建了名为“spring-test”的新领域,然后创建了名为“login-app”的新客户端 根据其余文档: POST: http://localh
我正在尝试使用 Postman 工具从 Microsoft Graph API 获取 accessToken。我正在使用 Type=oauth2.0 的 Authorization 选项卡中尝试它,以
我一直在尝试创建一个 access_token对于我的 api。我已经 followed the setup并且正在使用 Postman 测试/创建 token 。我似乎无法通过 invalid_gr
我按照文档所示将 grant_type 参数放入请求正文中,但 Microsoft Graph 仍然提示该参数不存在; const tokenRequestBody = [ "grant_ty
我尝试通过 TypeScript 中的 XHR-Request 访问我的 OAuth2 token 。我不断收到 400: {"error":"unsupported_grant_type","err
我正在尝试通过 disqus API 检索 access_token。 这是我的网址: https://disqus.com/api/oauth/2.0/access_token/?client_id
我正在使用 Django OAuth Toolkit,并且成功创建了sign_up 调用 - 这反过来给了我以下响应: { "username": "boban16", "client_id"
我正在尝试找出 API documentation用于 Paypal 自适应支付。所以我正在尝试翻译这个 curl 命令(示例): curl https://api.sandbox.paypal.co
我按照谷歌文档为我公司的桌面应用做了一个“用谷歌登录”,文档链接: https://developers.google.com/identity/protocols/OAuth2InstalledAp
我在通过 OAuth 对 Youtube API 进行身份验证时遇到问题。它给了我这个错误: “错误”:CURL 的“invalid_grant” “错误”:“无效请求”, “error_descri
我正在尝试使用 cURL 请求访问 salesforce 沙箱帐户。我已经使用成功运行的单独 salesforce 开发人员帐户创建了类似的 cURL 请求;但是,在修改该请求的信息后,我收到一个错误
我开始使用 intridea ( http://github.com/intridea/oauth2 ) 的 oauth2 gem,但不知道如何解决这个问题。我已经开发了客户端和服务器,并且在请求 a
我正在根据此文档:( https://developers.vendhq.com/documentation/oauth.html#oauth)使用OAuth 2.0进行授权,并出现以下错误: "er
我使用的是 IdentityServer4 包的 1.0.0 版。 "IdentityServer4": "1.0.0" 我创建了一个客户端 new Client { ClientId = "
我在 Lumen 微框架中使用 OAuth 2 身份验证。现在我使用的 grant_type 值为 password。如果我使用不同的东西,它会抛出unsupported_grant_type。我想知
我正在使用 Spring Oauth 2 来保护 Web 应用程序并实现三足安全系统,以及在使用时 grant_type=密码 我注意到用于获取用户 token 的 URL 是: Method : P
我是 OAuth2 概念的新手。我必须在我的应用程序中实现它。此应用程序提供 REST API。我遵循了一些教程,做了一些研究,并在我的应用程序中以工作状态实现了它。 但在进行一些搜索时,我读到了 O
我是一名优秀的程序员,十分优秀!