3

"사용자"Facebook 계정 정보가 "NoneType"유형이 아닌 문제가 있습니다. 첫 번째 Facebook 소셜 인증 후 확장 된 사용자 모델 정보 (userprofile)로 이미지를 저장하지 마십시오./account/login/oauth/complete/facebook/'NoneType'개체의 AttributeError는 'userprofile'속성이 없습니다.

추가 정보가 필요하면 알려 주시기 바랍니다.

settings.py :

SOCIAL_AUTH_FACEBOOK_SCOPE = ['email'] 
SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = { 
    'fields': 'id,name,email', 
} 

SOCIAL_AUTH_PIPELINE = (
    'social_core.pipeline.social_auth.social_details', 
    'social_core.pipeline.social_auth.social_uid', 
    'social_core.pipeline.social_auth.auth_allowed', 
    'social_core.pipeline.social_auth.social_user', 
    'social_core.pipeline.social_auth.associate_user', 
    'social_core.pipeline.social_auth.load_extra_data', 
    'social_core.pipeline.user.user_details', 
    'ridemaker.pipeline.save_profile', 
) 

pipeline.py :

from accounts.models import UserProfile 
from social_core.backends.facebook import FacebookOAuth2, FacebookAppOAuth2 
from urllib.request import urlopen 
from django.template.defaultfilters import slugify 
from django.core.files.base import ContentFile 

def save_profile(backend, details, response, uid,\ 
       user, *args, **kwargs): 
    if backend.__class__ == FacebookOAuth2: 
     url = "http://graph.facebook.com/%s/picture?type=large" % response['id'] 
     avatar = urlopen(url) 
     #Why is user argument "None"? 
     profile = user.userprofile 
     profile.image.save(slugify(user.username + " social") + '.jpg', 
         ContentFile(avatar.read())) 
     profile.save() 

답변

0

당신은 설정에서 SOCIAL_AUTH_PIPELINE을 무시하고 사용자를 만듭니다 파이프 라인 social_core.pipeline.user.create_user를 놓쳤다. social_core.pipeline.social_auth.social_user 이후에 두 파이프 라인을 넣으십시오. SOCIAL_AUTH_PIPELINE :

'social_core.pipeline.user.get_username', 
'social_core.pipeline.user.create_user',