1from allauth.account.models import EmailAddress 2from allauth.socialaccount.providers.base import ProviderAccount 3from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider 4 5 6class NaverAccount(ProviderAccount): 7 8 def get_avatar_url(self): 9 return self.account.extra_data.get('profile_image') 10 11 def to_str(self): 12 return self.account.extra_data.get('nickname', self.account.uid) 13 14 15class NaverProvider(OAuth2Provider): 16 id = 'naver' 17 name = 'Naver' 18 account_class = NaverAccount 19 20 def extract_uid(self, data): 21 return str(data['id']) 22 23 def extract_common_fields(self, data): 24 email = data.get("email") 25 return dict(email=email) 26 27 def extract_email_addresses(self, data): 28 ret = [] 29 email = data.get("email") 30 if email: 31 ret.append(EmailAddress(email=email, verified=True, primary=True)) 32 return ret 33 34 35provider_classes = [NaverProvider] 36