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