【发布时间】:2015-06-30 13:44:21
【问题描述】:
我们正在使用 Ember 为前端应用构建一个站点,该应用与我们的 Django Rest Framework API 后端交互。对于社交身份验证,我们使用django_rest_auth 加上django-allauth。该网站大部分都在工作,除了我们遇到了社交身份验证问题。我们的本地帐户身份验证/注册工作正常。
我做过很多使用 django-allauth 的项目,但这是第一次使用 restful 身份验证系统。 ember 应用程序能够很好地从谷歌获取令牌。响应类似于:
{
authorizationCode: "mYtokEn12345",
provider: "google-oauth2",
redirectUri: "http://localhost:4200/dashboard"
}
然后,我将 access_token 发布到我根据 django_rest_auth 文档设置的端点。 POST /auth/google {access_token:} 但我收到 Google 返回的错误消息,显示“凭据无效”。在通过 Google 进行身份验证并收到我的令牌后,如何获取无效凭据?
通过代码调试后,我发现在allauth.socialaccount.providers.google.views.GoogleOAuth2Adapter 类中的complete_login 函数中,我收到了来自https://www.googleapis.com/oauth2/v1/userinfo 的响应。
它正在尝试运行 GET https://www.googleapis.com/oauth2/v1/userinfo?access_token=mYtokEn12345&alt=json 但返回无效凭据。
{
error: {
errors: [
{
domain: "global",
reason: "authError",
message: "Invalid Credentials",
locationType: "header",
location: "Authorization"
}
],
code: 401,
message: "Invalid Credentials"
}
}
我很困惑从这里去哪里。任何人都对为什么会发生这种情况有一些指示?我可以提供任何其他代码/错误以提供帮助吗?
【问题讨论】:
标签: django google-oauth django-rest-framework django-allauth