2017-02-28 5 views
2

reactjs 프론트 엔드 응용 프로그램과 함께 백엔드 인증 프로세스에 django rest-auth 및 allauth를 함께 사용하려고합니다. 제대로 설치했는지 또는 이것이 버그인지 확실하지 않습니다. "uid"는 응답에 존재하지 않으며 api에서 전달되는 토큰 만 전달합니다. 나는 uid가 기존 사용자 또는 새로운 사용자의 새로운 사용자 중 하나 여야한다고 생각하며, "complete_login"은 그 사용자를 따라야합니다. ...Django rest-auth/allauth 및 weibo 통합

누구에게 아이디어가 있으면 알려주십시오. 아래

전체 추적 : 올바른 사용자 정보를 얻을하지 않았다 allauth을 의미

Traceback: 

File "/home/ubuntu/panbecopy/src/penv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    149.      response = self.process_exception_by_middleware(e, request) 

File "/home/ubuntu/panbecopy/src/penv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    147.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 

File "/home/ubuntu/panbecopy/src/penv/local/lib/python2.7/site-packages/django/views/decorators/csrf.py" in wrapped_view 
    58.   return view_func(*args, **kwargs) 

File "/home/ubuntu/panbecopy/src/penv/local/lib/python2.7/site-packages/django/views/generic/base.py" in view 
    68.    return self.dispatch(request, *args, **kwargs) 

File "/home/ubuntu/panbecopy/src/penv/local/lib/python2.7/site-packages/rest_framework/views.py" in dispatch 
    466.    response = self.handle_exception(exc) 

File "/home/ubuntu/panbecopy/src/penv/local/lib/python2.7/site-packages/rest_framework/views.py" in dispatch 
    463.    response = handler(request, *args, **kwargs) 

File "/home/ubuntu/panbecopy/src/penv/local/lib/python2.7/site-packages/rest_auth/views.py" in post 
    81.   self.serializer.is_valid(raise_exception=True) 

File "/home/ubuntu/panbecopy/src/penv/local/lib/python2.7/site-packages/rest_framework/serializers.py" in is_valid 
    213.     self._validated_data = self.run_validation(self.initial_data) 

File "/home/ubuntu/panbecopy/src/penv/local/lib/python2.7/site-packages/rest_framework/serializers.py" in run_validation 
    410.    value = self.validate(value) 

File "/home/ubuntu/panbecopy/src/penv/local/lib/python2.7/site-packages/rest_auth/registration/serializers.py" in validate 
    106.    login = self.get_social_login(adapter, app, token, access_token) 

File "/home/ubuntu/panbecopy/src/penv/local/lib/python2.7/site-packages/rest_auth/registration/serializers.py" in get_social_login 
    42.   social_login = adapter.complete_login(request, app, token, response=response) 

File "/home/ubuntu/panbecopy/src/penv/local/lib/python2.7/site-packages/allauth/socialaccount/providers/weibo/views.py" in complete_login 
    20.   uid = kwargs.get('response', {}).get('uid') 

Exception Type: AttributeError at /rest-auth/weibo/ 
Exception Value: 'unicode' object has no attribute 'get' 

답변

1

. 사용한 소셜 로그인의 소스 코드 (views.py 및 provider.py)를 확인할 수 있습니다. 예 : linkedin,

def complete_login(self, request, app, token, **kwargs): 
    extra_data = self.get_user_info(token) 
    return self.get_provider().sociallogin_from_response(
     request, extra_data) 

올바른 매개 변수 (token, kwargs)를 사용했는지 확인하십시오. 주의를 기울여야합니다. 다양한 소셜 인증 플러그인의 토큰 매개 변수가 다릅니다. 예를 들어 링크 된 문자열의 경우 문자열이지만 weibo의 경우는

uid = kwargs.get('response', {}).get('uid') 

즉, '응답'은 사전이어야합니다.

올바른 형식으로 올바른 매개 변수를 사용하면 올바르게 작동합니다.

호프가 도움이됩니다.