Django 고급 초보자는 여기에 있습니다. 벽에 머리를 대고있어 이걸 알아 내려고 해요. 나는 사용자를 등록하고 로그인하기 위해 contrib.auth에 묶인 twython_django_oauth을 사용하는 간단한 webapp를 가지고있다. (변경없이 twython을 사용하고 있습니다.) 문제없이 트위터를 통해 새로운 사용자를 등록 할 수 있습니다.이 사용자는 로그인 한 사용자로 앱에 반환합니다.Twython을 사용하는 장고 앱 Oauth는 'AnonymousUser'객체에 'backend'속성이 없습니다.
Traceback:
File "/app/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/app/thislist/twython_django_oauth/views.py" in thanks
80. login(request, user)
File "/app/lib/python2.7/site-packages/django/contrib/auth/__init__.py" in login
82. request.session[BACKEND_SESSION_KEY] = user.backend
Exception Type: AttributeError at /thanks
Exception Value: 'AnonymousUser' object has no attribute 'backend'
하나는 이상 내가 알 두 번 승인 한 경우이 문제가 발생 등록 된 사용자의 트위터 계정에 웹 애플리케이션이 표시됩니다 있다는 것입니다 : 후속 시도는 사용자 로그인을하지만,이 오류를 반환합니다. 덧붙여 말하면,이 모든 것은 몇 주 전에 잘 작동하는 것처럼 보였습니다. 문제없이 로그인 할 수있는 두 명의 트위터 사용자가 등록되어 있습니다. 이 계정에서는 앱이 한 번만 승인 된 것처럼 보입니다. 그러나, 나는이 사용자가 문제를 일으킬 수있는 변경 사항을 파악하기 위해 등록한 시점까지 앱을 다시 전화 할 수 없습니다. 누군가가 적절한 자격 증명으로 등록 된 것처럼 보이지만 여기 워크 플로우가 AnonymousUser를 반환하는 이유에 대한 통찰력이 있다면, 귀하의 의견을 듣고 싶습니다.
업데이트 : 문제의 원인을 제로로 처리했습니다. twython_django는 트위터 자격증 명을 성공적으로 입력 한 후 사용자가 앱으로 리디렉션 될 때마다 등록 중에 생성되고 webapp의 Twitter 프로필 데이터베이스에 저장되는 비밀 토큰을 잡는 대신 새로운 'oauth_token_secret'을 사용하여 로그인하려고 시도합니다. 결과적으로 django는 사용자를 인증 할 수 없습니다. 따라서 질문은 다음과 같습니다. 이유가 무엇입니까?
try:
user = User.objects.get(username = authorized_tokens['screen_name'])
저장된 비밀 토큰을 사용하여 사용자 개체를 생성하십시오.
이 경우 적용 할 수 있는지 확실하지 않지만 ORM에서 검색 한 것과 같은 방식으로 User 객체를 처리하려고 시도했을 때 유사하다고 생각됩니다. 백엔드 속성을 가진 객체는 ORM이 아니라 (authenticate()를 사용하여) 사용자를 로깅합니다. 적어도 그것은 정상적인 인증에서 작동하는 방법입니다. – Tom