Пробелы внутри созданных OAuth2 URL-адресов social-auth-app-django
У меня возникла проблема, когда мое Django-приложение (использующее social-auth-app-django 5.4.1) создает URL-адреса, которые дают ошибки при интеграции с Google sign in.
Развернутый текст этой ошибки таков: Детали запроса: redirect_uri=
http://127.0.0.1:8000/accounts/complete/google-oauth2/ flowName=GeneralOAuthFlow
Между google-oauth2/
и flowName
стоит пробел. Google не допускает пробелов в именах URI перенаправления.
Насколько я знаю, я не контролирую, как строится этот раздел URL, поэтому я в некотором замешательстве, как мне решить эту проблему.
Для контекста, эта ошибка возникает после попытки нажать на следующую ссылку, обернутую в ссылку social:begin, предоставленную social-auth-app-django:
<a href="{% url 'social:begin' 'google-oauth2' %}" class="btn bsb-btn-xl btn-outline-primary btn-form-orange-inv">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-google" viewBox="0 0 16 16">
<path d="M15.545 6.558a9.42 9.42 0 0 1 .139 1.626c0 2.434-.87 4.492-2.384 5.885h.002C11.978 15.292 10.158 16 8 16A8 8 0 1 1 8 0a7.689 7.689 0 0 1 5.352 2.082l-2.284 2.284A4.347 4.347 0 0 0 8 3.166c-2.087 0-3.86 1.408-4.492 3.304a4.792 4.792 0 0 0 0 3.063h.003c.635 1.893 2.405 3.301 4.492 3.301 1.078 0 2.004-.276 2.722-.764h-.003a3.702 3.702 0 0 0 1.599-2.431H8v-3.08h7.545z" />
</svg>
<span class="ms-2 fs-6">Google</span>
Соответствующие настройки следующие:
# Authentication Backends
AUTHENTICATION_BACKENDS = (
'social_core.backends.google.GoogleOAuth2',
'django.contrib.auth.backends.ModelBackend',
)
# Google OAuth2
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = config('GOOGLE_CLIENT_ID') + '.apps.googleusercontent.com'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = config('GOOGLE_CLIENT_SECRET')
SOCIAL_AUTH_URL_NAMESPACE = 'social'
LOGIN_REDIRECT_URL = '/dashboard/'
LOGOUT_REDIRECT_URL = '/'
И главный urls.py:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('home.urls')),
path('', include('users.urls')),
path('dashboard/', include('dashboard.urls')),
path('accounts/', include('social_django.urls', namespace='social')),
]
Вероятно ли, что пробельные символы - это ошибка в пакете или в моем коде? Если последнее, то как мне следует поступить, чтобы решить эту проблему?
Оказалось, что, несмотря на пробелы, это не имеет значения.
http://127.0.0.1:8000/accounts/complete/google-oauth2/
Это, очевидно, правильный URI для этой цели.