Django에서 제 3 자 서비스 (Facebook, LinkedIn 등)의 고유 ID를 기반으로 사용자를 기록하는 사용자 정의 인증 백엔드를 구현하려고합니다. 기본적으로, 한 번 사용자 OAuth 타사 서비스에 다시 독특한 식별자를 얻을, 나는 그들을 원활하게 로그인 싶습니다.Django 타사 앱을 통한 사용자 정의 인증 백엔드
하지만 내 사용자 정의 백엔드가 작동하지 않고 '없음'을 반환합니다. 내 settings.py에서이 백엔드 설정 한
from myapp.models import Account
from django.contrib.auth.models import User
class ThirdPartyServiceBackend(object):
def authenticate(self,acct_id=None):
if acct_id is not None:
try:
return User.objects.get(account__uniq_id=acct_id)
except:
return None
def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None
:
여기 내 사용자 지정 백엔드의
AUTHENTICATION_BACKENDS = (
'myproject.myapp.backends.ThirdPartyServiceBackend',
'django.contrib.auth.backends.ModelBackend',
)
을 그리고 이것은 내가 views.py에서이를 처리하는 방법입니다
# oauth processing and everything goes here
try:
# login and redirect to search page
user = authenticate(acct_id=third_party_service_user_info['id'])
if user is not None:
auth_login(request,user)
return HttpResponseRedirect('/')
이 호출은 셸에서 문제없이 작동합니다. 사용자가 반환됩니다. 하지만 인증 호출이 실패합니다 - 내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까?