2012-10-17 3 views
0

django-social-auth를 사용하여 사용자가 Facebook을 사용하여 웹 사이트에 로그인 할 수있게하려고합니다. 이름과 성을 저장하고 사용자의 이메일을 보내려고합니다. 그러나 설명서의 설정을 사용하여 사용자 이름, 전자 메일 및 인증 토큰을 저장하지만 어떤 이유로 인해 이름과 성을 저장하지 않습니다. 코드를 살펴보면, FacebookBackend 클래스는 get_user_details 함수를 제공하지만 어떻게 사용하는지 모르겠습니다. 이 정보를 얻는 간단한 방법이 있어야 할 것 같습니다. 그렇지 않은 경우 항상 option to add an additional pipeline이 있습니다.django-social-auth에서 get_user_details 사용

답변

1

성 및 이름은 기본 파이프 라인에서 이미 검색되었습니다. 페이스 북 백엔드는 이름과 성을 설정하는 get_user_details (줄 47)을 호출합니다.

기본 파이프 라인은 각 성공적인 로그인에서 메소드를 다시 호출하여 이러한 세부 사항을 업데이트합니다.

'social_auth.backends.pipeline.user.update_user_details' 

그러니 당신의 페이스 북의 사용자가 이름과 성이 설정되지 않거나 설정이 잘못 될 수도, 당신은 어떤 버전을 실행 :이 동작은 제외하고 자신의 파이프 라인을 구성하여 해제 할 수 있습니다?

+0

버전 0.7.5를 사용하고 있습니다. social-auth와 관련된 설정은 다음과 같습니다 :'SOCIAL_AUTH_EXPIRATION = 'expires''와'AUTHENTICATION_BACKENDS = ('social_auth.backends.facebook.FacebookBackend ',)' – Devang

+0

사실이 문제는'create_user' 함수로 생각할 수 있습니다. 상위 레이어는 성과 이름을 얻지 만 사용자는 username과 email로만 생성됩니다. [_ user ': UserSocialAuth.create_user (username = username, email = email), _] (https://github.com/omab /django-social-auth/blob/v0.7.7/social_auth/backends/pipeline/user.py#L49) – Devang

+0

문서에 언급 된대로 SOCIAL_AUTH_PROTECTED_USER_FIELD를 사용하여 사용자를 사용한 다음 작업을 수행 할 수 있다고 생각합니다. Devang