django-rest-framework-social-oauth2
django-rest-framework-social-oauth2 copied to clipboard
AppleIdAuth not working
I've been trying to implement sign in with apple following this article and instructions from the docs, but still struggling.
I have set up everything from the docs, but whenever I make a request to convert_token
view, I always end up with the following Exception:
#...
File "/myproject/.venv/lib/python3.8/site-packages/rest_framework/views.py" in dispatch
502. response = handler(request, *args, **kwargs)
File "/myproject/.venv/lib/python3.8/site-packages/rest_framework_social_oauth2/views.py" in post
70. url, headers, body, status = self.create_token_response(request._request)
File "/myproject/.venv/lib/python3.8/site-packages/oauth2_provider/views/mixins.py" in create_token_response
128. return core.create_token_response(request)
File "/myproject/.venv/lib/python3.8/site-packages/oauth2_provider/oauth2_backends.py" in create_token_response
145. headers, body, status = self.server.create_token_response(
File "/myproject/.venv/lib/python3.8/site-packages/oauthlib/oauth2/rfc6749/endpoints/base.py" in wrapper
116. return f(endpoint, uri, *args, **kwargs)
File "/myproject/.venv/lib/python3.8/site-packages/rest_framework_social_oauth2/oauth2_endpoints.py" in create_token_response
59. return grant_type_handler.create_token_response(
File "/myproject/.venv/lib/python3.8/site-packages/oauthlib/oauth2/rfc6749/grant_types/refresh_token.py" in create_token_response
60. self.validate_token_request(request)
File "/myproject/.venv/lib/python3.8/site-packages/rest_framework_social_oauth2/oauth2_grants.py" in validate_token_request
94. user = backend.do_auth(access_token=request.token)
File "/myproject/.venv/lib/python3.8/site-packages/social_core/utils.py" in wrapper
248. return func(*args, **kwargs)
File "/myproject/.venv/lib/python3.8/site-packages/social_core/backends/oauth.py" in do_auth
403. return self.strategy.authenticate(*args, **kwargs)
File "/myproject/.venv/lib/python3.8/site-packages/social_django/strategy.py" in authenticate
107. return authenticate(*args, **kwargs)
File "/myproject/.venv/lib/python3.8/site-packages/django/contrib/auth/__init__.py" in authenticate
73. user = backend.authenticate(request, **credentials)
File "/myproject/.venv/lib/python3.8/site-packages/social_core/backends/base.py" in authenticate
80. return self.pipeline(pipeline, *args, **kwargs)
File "/myproject/.venv/lib/python3.8/site-packages/social_core/backends/base.py" in pipeline
83. out = self.run_pipeline(pipeline, pipeline_index, *args, **kwargs)
File "/myproject/.venv/lib/python3.8/site-packages/social_core/backends/base.py" in run_pipeline
113. result = func(*args, **out) or {}
File "/myproject/.venv/lib/python3.8/site-packages/social_core/pipeline/social_auth.py" in social_details
5. return {'details': dict(backend.get_user_details(response), **details)}
File "/myproject/.venv/lib/python3.8/site-packages/social_core/backends/base.py" in get_user_details
173. raise NotImplementedError('Implement in subclass')
Exception Type: NotImplementedError at /web/hook/apple-sign-in/
Exception Value: Implement in subclass
It's weird - it seems like the BaseAuth
tries to authenticate the user instead of AppleIdAuth, but my settings seem to be correct in this regard.
In my settings.py
:
AUTHENTICATION_BACKENDS = [
'rest_framework_social_oauth2.backends.DjangoOAuth2',
'django.contrib.auth.backends.ModelBackend'
]
SOCIAL_AUTH_AUTHENTICATION_BACKENDS = (
'social_core.backends.apple.AppleIdAuth',
)
REST_FRAMEWORK = {
# ...
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
'oauth2_provider.contrib.rest_framework.OAuth2Authentication',
'rest_framework_social_oauth2.authentication.SocialAuthentication',
),
}
Example payload I am trying to send to convert_token
:
{
"grant_type": "convert_token",
"client_id": "~someid",
"client_secret": "~someappsecret",
"backend": "apple-id",
"token": "~sometokenfromapple",
}
Am I missing something? Please advise.
Or should I add social_core.backends.apple.AppleIdAuth
to AUTHENTICATION_BACKENDS
? What is SOCIAL_AUTH_AUTHENTICATION_BACKENDS
is used for?
This lib is not maintained anymore. Use https://github.com/wagnerdelima/drf-social-oauth2 instead
try to send : identity token from iOS app here it worked with me : { "grant_type": "convert_token", "client_id": "~someid", "client_secret": "~someappsecret", "backend": "apple-id", "token": "identity token", <-- }
@AbdullahEslah Oh my God, thanks a lot! I have been struggling with this for two days and now I found your solution!
@denizdogan
@AbdullahEslah Oh my God, thanks a lot! I have been struggling with this for two days and now I found your solution!
Any Time friend i was like you 9 months ago .. we all here to help each other 😃
Hi, need help to implement apple auth, i try to follow step from @AbdullahEslah but receive error like this.
{ "error": "invalid_request", "error_description": "Invalid backend parameter." }