gpt4 book ai didi

django - 通过访问 token 进行Python社交身份验证失败

转载 作者:行者123 更新时间:2023-12-02 02:37:31 26 4
gpt4 key购买 nike

我目前正在使用 Django (1.7) 开发一个服务器后端,它应该使用 python-social-auth 通过社交网络处理身份验证。我关注了Tutorial在这个网站上,它描述了一个简单的 Web 应用程序的过程。这非常适合 Google 和 Twitter 登录。

由于服务器应该只是一个 REST-FULL 后端,所以我决定在客户端获取访问 token 并将其发送到服务器。服务器将对其进行身份验证。这个过程应该没有问题,甚至在 python-social-auth 的文档中作为示例给出。

但是,如果我确实设置了所有内容,我将收到一条错误消息:“后端未找到 404”。

这是该项目的最小部分:

settings.py:(我还包括了 API_KEY 和 SECRET)

AUTHENTICATION_BACKENDS = (
#'social.backends.facebook.FacebookOAuth2',
'social.backends.google.GoogleOAuth2',
'social.backends.twitter.TwitterOAuth',
'django.contrib.auth.backends.ModelBackend',
)

views.py(用于身份验证 View )

from django.contrib.auth import login

from social.apps.django_app.utils import psa

@psa('social:complete')
def register_by_access_token(request, backend):
token = request.GET.get('access_token')
user = request.backend.do_auth(request.GET.get('access_token'))
if user:
login(request, user)
return 'OK'
else:
return 'ERROR'

这是我从文档中复制的,仅将 backend.do_auth 更改为 request.backend.do_auth。这似乎是文档中的错误。

url.py:

...
url(r'^register-by-token/(?P<backend>[^/]+)/$', 'register_by_access_token')
...

也按照文档中的建议。

我只是试图让它只适用于 google-oauth,因为有一个简单的 js-lib 可以为您提供访问 token 。这也很有效,我向

发送了一个请求
GET http://localhost:8000/register-by-token/google-oauth2/<access-token>/

如上所述,返回的是 404 Backend not found。我做了一些调试,发现错误是在登录函数中引发的,而不是后端的 do_auth() 函数中引发的。因此,实际的身份验证过程有效。我还尝试使用随机生成的字符串作为 token ,并收到相应的错误,即无法对用户进行身份验证。

有趣的是,用户甚至有一个属性后端,它应该保存“social.backends.google.GoogleOAuth2”。

感谢您在这篇长篇文章中留下来,我希望有人知道可能出了什么问题:)。期待您的答复。

最佳答案

register_by_access_token View 中,您将在 GET 参数中获取 access_token

user = request.backend.do_auth(request.GET.get('access_token'))

您所保护的网址是:

url(r'^register-by-token/(?P<backend>[^/]+)/$', 'register_by_access_token')

所以你需要请求类似的东西:

GET http://localhost:8000/register-by-token/google-oauth2/?access_token=<access_token>

然而,你正在做:

GET http://localhost:8000/register-by-token/google-oauth2/<access-token>/

您在 url 参数中传递 access_token,这是错误的。

关于django - 通过访问 token 进行Python社交身份验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26252633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com