2012-02-19 5 views
4

django-social-auth를 설치할 수는 있지만, 실제로 페이스 북에서 얻은 데이터를 사용하여 사용자 이름을 만들고 프로파일 이미지 또는 about을 사용할 수있는 순간을 놓치고 있습니다. 필드 ...django social auth 페이스 북 데이터를 사용합니다.

나는 장고 - 사회 - 인증의 설정에 내가 SOCIAL_AUTH_DEFAULT_USERNAME = 'new_social_auth_user'을 설정하고 수 있다는 것을 알고 FACEBOOK_EXTENDED_PERMISSIONS = [...]하지만 내 코드에서 내가 플러그인 할 수있는 나는 undestrand하지 않습니다 이 데이터는 임의의 사용자 이름을 갖지 않도록합니다.

+2

을 첫째로, 당신은 더 많은 동의를 시도해야 가능한 경우 귀하의 질문에 대한 답변 - 사람들이 당신을 도울 가능성이 더 높습니다. 이 질문에 관해서; 당신은 사용자 이름 등을 조작 할 수 있기를 원하십니까? __after__ 그들은 facebook으로 승인했지만 __before__ 그들의 사용자 이름은 DB에 저장됩니까? –

+0

바로! 나는 대답을 받아들이는 것에 대해 깨닫지 못했습니다. 나는 분명히 더 많은 대답을 받아 들일 것이고, 나는 오직 한 가지 대답만을 받아 들여야한다고 생각한다. 고맙습니다. – freethrow

+0

글쎄, 질문 당 하나의 답변 만 수락 할 수 있으며 실제로 맞으면 그렇게해야합니다. 그러나 문제를 파악하면 자신의 대답을 수락 할 수도 있습니다. –

답변

13

django-social-auth은 인증 프로세스의 특정 단계에서 사용자 지정 함수를 삽입 할 수있는 파이프 라인을 구현합니다 (이 기능은 사용하지 않았을 때 새로운 기능인 것처럼 보입니다). the docs hereexample pipline function을 확인하십시오. 자신의 필요 O를 따라 custom_create_user 기능은 기본 create_user를 래핑

SOCIAL_AUTH_PIPELINE = (
    'social_auth.backends.pipeline.social.social_auth_user', 
    'social_auth.backends.pipeline.associate.associate_by_email', 
    'social_auth.backends.pipeline.user.get_username', 

    'app.pipeline.custom_create_user', 

    'social_auth.backends.pipeline.social.associate_user', 
    'social_auth.backends.pipeline.social.load_extra_data', 
    'social_auth.backends.pipeline.user.update_user_details' 
) 

및 사용자 이름을 만들 :

그래서 당신은 함수를 작성할 수

from social_auth.backends.pipeline.user import create_user 
def custom_create_user(request, *args, **kwargs): 
    user = *kwargs.get('user', None) 
    # Do something with username 
    return create_user(request, args, kwargs) 
+0

이것은 내가 필요한 것입니다. 이상하게도 충분히 문서를 읽고 거기에서 알아낼 수 없었습니다. 아주 간단했습니다. 파이프 라인에서 페이 스북 추가 데이터를 사용할 수 있습니까? 아니면 다른 Facebook django 앱을 사용해야합니까 (너무 복잡한 일을하고 싶지는 않습니다). – freethrow

관련 문제