3

「ユーザー」Facebookアカウント情報の代わりに「なし」タイプの問題があります。最初のFacebookのソーシャル認証後に拡張されたユーザーモデル情報(userprofile)としてイメージを保存しないでください。/account/login/oauth/complete/facebook/'NoneType'オブジェクトの属性エラーは '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の後に2つのパイプラインを挿入してSOCIAL_AUTH_PIPELINE

'social_core.pipeline.user.get_username', 
'social_core.pipeline.user.create_user', 
関連する問題