Я настроил вход в социальную сеть с помощью Google с помощью dj-rest-auth и платформы Django rest. Когда я пытаюсь передать код аутентификации на свою конечную точку, я получаю ошибку 400:
Запрос
{
"code": "4%google-auth-code"
}
Ответ
{
"non_field_errors": [
"Failed to exchange code for access token"
]
}
Вот мой код. Файл settings.py:
INSTALLED_APPS = [
...
'django.contrib.sites',
'rest_framework',
'rest_framework.authtoken',
'dj_rest_auth',
'dj_rest_auth.registration',
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.google',
...
]
MIDDLEWARE = [
...
'allauth.account.middleware.AccountMiddleware',
]
SITE_ID = 1
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = 'my_social_key'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = 'google_secret'
SOCIALACCOUNT_PROVIDERS = {
'google': {
'APP': {
'client_id': SOCIAL_AUTH_GOOGLE_OAUTH2_KEY,
'secret': SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET,
},
}
}
AUTHENTICATION_BACKENDS = [
'allauth.account.auth_backends.AuthenticationBackend',
]
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
]
}
user/urls.py
from django.urls import path
from user import views
app_name = 'user'
urlpatterns = [
...
path('auth/google/', views.GoogleLogin.as_view(), name='google_login'),
...
]
user/views.py
from allauth.socialaccount.providers.google.views import GoogleOAuth2Adapter
from allauth.socialaccount.providers.oauth2.client import OAuth2Client
from dj_rest_auth.registration.views import SocialLoginView
class GoogleLogin(SocialLoginView):
adapter_class = GoogleOAuth2Adapter
callback_url = 'http://localhost:8000/api/auth/google/'
client_class = OAuth2Client
**requirements.txt
**
dj-rest-auth==6.0.0django-allauth==0.61.0
Google Cloud Console работает правильно. URL-адрес перенаправления также подходит
введите здесь описание изображения
Я пытался отловить эту ошибку из модуля dj-rest-auth, но даже там информация поверхностная:
`Error retrieving access token: b'{\n "error": "invalid_grant",\n "error_description": "Malformed auth code."\n}'`
Подробнее здесь: https://stackoverflow.com/questions/790 ... cess-token
Ошибка dj_rest_auth SocialLoginView «Не удалось обменять код на токен доступа» ⇐ Python
Программы на Python
1730891276
Anonymous
Я настроил вход в социальную сеть с помощью Google с помощью dj-rest-auth и платформы Django rest. Когда я пытаюсь передать код аутентификации на свою конечную точку, я получаю ошибку 400:
Запрос
{
"code": "4%google-auth-code"
}
Ответ
{
"non_field_errors": [
"Failed to exchange code for access token"
]
}
Вот мой код. Файл [b]settings.py[/b]:
INSTALLED_APPS = [
...
'django.contrib.sites',
'rest_framework',
'rest_framework.authtoken',
'dj_rest_auth',
'dj_rest_auth.registration',
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.google',
...
]
MIDDLEWARE = [
...
'allauth.account.middleware.AccountMiddleware',
]
SITE_ID = 1
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = 'my_social_key'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = 'google_secret'
SOCIALACCOUNT_PROVIDERS = {
'google': {
'APP': {
'client_id': SOCIAL_AUTH_GOOGLE_OAUTH2_KEY,
'secret': SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET,
},
}
}
AUTHENTICATION_BACKENDS = [
'allauth.account.auth_backends.AuthenticationBackend',
]
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
]
}
[b]user/urls.py[/b]
from django.urls import path
from user import views
app_name = 'user'
urlpatterns = [
...
path('auth/google/', views.GoogleLogin.as_view(), name='google_login'),
...
]
[b]user/views.py[/b]
from allauth.socialaccount.providers.google.views import GoogleOAuth2Adapter
from allauth.socialaccount.providers.oauth2.client import OAuth2Client
from dj_rest_auth.registration.views import SocialLoginView
class GoogleLogin(SocialLoginView):
adapter_class = GoogleOAuth2Adapter
callback_url = 'http://localhost:8000/api/auth/google/'
client_class = OAuth2Client
**requirements.txt
**
dj-rest-auth==6.0.0django-allauth==0.61.0
Google Cloud Console работает правильно. URL-адрес перенаправления также подходит
введите здесь описание изображения
Я пытался отловить эту ошибку из модуля dj-rest-auth, но даже там информация поверхностная:
`Error retrieving access token: b'{\n "error": "invalid_grant",\n "error_description": "Malformed auth code."\n}'`
Подробнее здесь: [url]https://stackoverflow.com/questions/79079359/dj-rest-auth-socialloginview-error-failed-to-exchange-code-for-access-token[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия