Django-allauth apple login KeyError id_token
Я использую django-allauth
и django-rest-auth
для аутентификации.
Я реализовал google
логин с ними тоже.
Это мои урлы
url('rest-auth/apple/$', AppleLogin.as_view(), name='apple_login')
и это мой views.py
файл
from allauth.socialaccount.providers.apple.views import AppleOAuth2Adapter
from rest_auth.registration.views import SocialLoginView
class AppleLogin(SocialLoginView):
adapter_class = AppleOAuth2Adapter
serializer_class = CustomSocialLoginSerializer
def get_serializer(self, *args, **kwargs):
serializer_class = self.get_serializer_class()
kwargs['context'] = self.get_serializer_context()
return serializer_class(*args, **kwargs)
и это мой serializers.py
файл
from rest_auth.registration.serializers import SocialLoginSerializer
class CustomSocialLoginSerializer(SocialLoginSerializer):
is_advertiser = serializers.BooleanField(required=False, default=False)
def validate(self, attrs):
attrs = super().validate(attrs)
user = attrs['user']
if attrs.get('is_advertiser'):
user.is_advertiser = True
user.save()
return attrs
Это мой settings.py
файл
SOCIALACCOUNT_PROVIDERS = {
'apple': {
"APP": {
"client_id":'KEY GOES THERE', # APP ID
"secret": 'APPLE SECRET KEY GOES THERE',
"key": 'APPLE KEY GOES THERE',
# The certificate you downloaded when generating the key.
"certificate_key": """-----BEGIN PRIVATE KEY-----
MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQg806TKaQPgPJ7jj9e
AFDJSKJFOW8495U93453SDVWFEOWI5U3405U34059U3450I304534095I34095I3
Mo4LCUa2GZhKDO2qHehLbAASDFSDFKJLKREKlok6MvuI8riC6xdnPGEcUp4
z5ihhVbY
-----END PRIVATE KEY-----
"""
},
},
}
Вышеуказанная настройка проста, но она выдает мне эту ошибку
KeyError at /rest-auth/apple/
'id_token'
Вот вам traceback
ile "/home/py/.local/share/virtualenvs/backend-sje3MIgt/lib/python3.7/site-packages/rest_framework/serializers.py" in run_validation
422. value = self.validate(value)
File "/home/py/Desktop/kidgistics/backend/home/api/v1/serializers.py" in validate
116. attrs = super().validate(attrs)
File "/home/py/.local/share/virtualenvs/backend-sje3MIgt/lib/python3.7/site-packages/rest_auth/registration/serializers.py" in validate
118. social_token = adapter.parse_token({'access_token': access_token})
File "/home/py/.local/share/virtualenvs/backend-sje3MIgt/lib/python3.7/site-packages/allauth/socialaccount/providers/apple/views.py" in parse_token
92. identity_data = self.get_verified_identity_data(data["id_token"])
Exception Type: KeyError at /rest-auth/apple/
Exception Value: 'id_token'
Я думаю, что реализовал все правильно, не понимаю, в чем проблема.
Я нашел это решение и попробовал этот способ: Аппл логин в django rest framework с allauth и rest-auth
Я не хочу устанавливать дополнительные зависимости для достижения этой цели. Я хочу строго придерживаться django-allauth
и django-rest-auth
Вот версия:
django-allauth = "~=0.44.0"
django-rest-auth = "~=0.9.5"
Помогите, пожалуйста, решить проблему?