Evgenii Legotckoi
Evgenii Legotckoi13. Juli 2018 03:17

Django - Tutorial 036. So fügen Sie die Authentifizierung über soziale Netzwerke hinzu. VKontakte

Auf Empfehlung von Website-Benutzern begann ich, der Website eine Autorisierung über soziale Netzwerke hinzuzufügen. Das erste soziale Netzwerk dieser Art war VKontakte, das beliebteste soziale Netzwerk unter den Benutzern meiner Website.

Django selbst verfügt über die notwendige Funktionalität für die Arbeit mit dem OAuth 2.0-Protokoll, das in der VKontakte-API verwendet werden könnte, um Benutzer auf Ressourcen von Drittanbietern zu autorisieren (und nicht nur für die Autorisierung). Aber in diesem Fall habe ich mein Fahrrad nicht mit der nackten OAuth-Unterstützung von Django geschrieben, sondern einen sehr guten Akku gefunden, der wahrscheinlich unter Django-Site-Entwicklern ziemlich bekannt ist, der es mir ermöglichte, die Autorisierung über VKontakte in nur wenigen Stunden zu implementieren .

Diese Batterie heißt Python Social Auth Django .

Schauen wir uns Schritt für Schritt an, was wir tun müssen, um die Autorisierung über VKontakte mit einer Site mit Django zu verbinden


Schritt 1 – Installieren von Python Social Auth Django

Dies erfolgt mit einem Befehl in Ihrer virtuellen Umgebung über das Pip-Dienstprogramm.

pip install social-auth-app-django

Die Dokumentation schlägt zwei ORM-Optionen zum Konfigurieren des Authentifizierungssystems über soziale Netzwerke vor. Dies ist das klassische Django-ORM und MongoEngine-ORM, aber es kam vor, dass das für MongoEngine erforderliche Paket veraltet und mit den neuesten Versionen von Django etwas inkompatibel ist, es funktioniert einfach nicht, sogar die Mongoengine-Entwicklerdokumentation hängt einen Hilferuf bei Unterstützung für das Dienstprogramm. Daher werden wir nur für das klassische ORM konfigurieren.

Schritt 2 - Registrieren Sie den Akku auf Ihrer Website

Wir registrieren die Authentifizierungsanwendung in INSTALLED_APPS

INSTALLED_APPS = (
    ...
    'social_django',
    ...
)

Schritt 3 – Datenbankmigration

Sie müssen Änderungen an der Datenbankstruktur vornehmen, da diese Batterie ihre eigenen Tabellen hat, um mit Benutzerberechtigung zu arbeiten.

./manage.py migrate

Als nächstes folgen wir einer weiteren Empfehlung zum Einrichten einer Datenbank, wenn Sie wie ich PostgreSQL verwenden. Nämlich...

Bei Verwendung von PostgreSQL wird empfohlen, das integrierte JSONB-Feld zum Speichern der extrahierten Additional_data zu verwenden. Um es zu aktivieren, legen Sie die Einstellung fest:

SOCIAL_AUTH_POSTGRES_JSONFIELD = True

Schritt 4 – Einrichten von Authentifizierungs-Backends

Wir schreiben auch in settings.py

AUTHENTICATION_BACKENDS = (
    'social_core.backends.vk.VKOAuth2',          # бекенд авторизации через ВКонтакте
    'django.contrib.auth.backends.ModelBackend', # бекенд классической аутентификации, чтобы работала авторизация через обычный логин и пароль
)

Stellen Sie sicher, dass Sie das klassische Authentifizierungs-Backend aktivieren, da Sie sonst die Möglichkeit verlieren, die Website über Ihr Login und Passwort zu betreten.

Schritt 5 - Einrichten des Vorlagenprozessors

In den anderthalb Jahren der Entwicklung dieser Seite ist die Einstellung VORLAGEN fast unverändert geblieben, aber ich habe eine Zeile für diese Batterie hinzugefügt

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'social_django.context_processors.backends', # Добавил эту строку
            ],
        },
    },
]

Schritt 6 - Einrichten von Schlüsseln für VKontakte

Hier ist die Einstellung der geheimen Schlüssel für VKontakte

SOCIAL_AUTH_VK_OAUTH2_KEY = 'XXXXXXX'
SOCIAL_AUTH_VK_OAUTH2_SECRET = 'XXXXXXXXXXXXXXXXXXXX'

Um sie zu erhalten, müssen Sie eine Anwendung im VKontakte-Entwickler-Toolkit erstellen und Ihre Anwendungs-ID und Ihren geheimen Schlüssel dafür verwenden.

Registrieren Sie die Anwendung

Wir gehen in die Einstellungen und sehen alles, was Sie brauchen

Als Ergebnis schreiben wir die folgenden Einstellungen in diesen Variablen vor

SOCIAL_AUTH_VK_OAUTH2_KEY = 'ID приложения'
SOCIAL_AUTH_VK_OAUTH2_SECRET = 'Защищённый ключ'

Schritt 7 - Verbinden von Autorisierungsrouten in urls.py

Es ist so gemacht

urlpatterns = [
    ...
    path('', include('social_django.urls')),
]

Schritt 8 - Hinzufügen eines Links zur Route

Und jetzt fügen wir irgendwo in der Vorlage einen Link zur Route hinzu, um die Autorisierung über VKontakte zu starten

<a href="/login/vk-oauth2"><img src="/static/lvk.png" class="avatar-3" data-toggle="tooltip" title="{% trans 'Login via VKontakte' %}"></a>

Schritt 9 - Einrichten einer Weiterleitung beim Anmelden

Dies ist eine optionale Einstellung, die die URL angibt, um den Benutzer nach einer erfolgreichen Anmeldung auf Ihre Seite umzuleiten. Verlassen Sie den Stamm der Site

LOGIN_REDIRECT_URL = '/'

Dort erfährst du, wie du es am besten machst.

Schritt 10 – Fordern Sie die Berechtigung zum Zugriff auf E-Mails an

Meine Website verwendet ein eigenes System zum Versenden von Benachrichtigungen per E-Mail. Daher ist es wichtig, dass ich Zugriff auf die E-Mail des Benutzers habe, um ihn über neue Ereignisse auf der Ressource zu benachrichtigen. Fügen wir also eine Anfrage hinzu, um Zugriff auf E-Mails zu erhalten.

SOCIAL_AUTH_VK_OAUTH2_SCOPE = ['email']

Für Django empfehle ich VDS-Hosting TIMEWEB

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

bernar92
  • 14. Juli 2018 00:17

Мне интересно что будет если в обеих сетях в авторизации одинаковый еmail. Не выведет ли ошибку ?

Evgenii Legotckoi
  • 14. Juli 2018 14:35

Не, не будет, в данной батарейке уже есть необходимый функционал по разрулированию этой проблемы. Аутентификации из разных социальных сетей будут сливаться на один аккаунт. Так что всё нормально должно быть.

В следующей статье будет описан этот момент. Опубликую статью в понедельник.
bernar92
  • 7. August 2018 00:10

интересно можно ли через эту батарейку получить данные на данные в вк(друзья, фото итд)

Evgenii Legotckoi
  • 7. August 2018 02:48

Там можно запросить доступ к тому или иному функционалу, а вот полное использование API, как я понимаю, потребует либо дописывания функционала, или использование ещё каких-нибудь батареек

Misha Lebedev
  • 14. Januar 2019 00:32

Нашёл ошибку в вашем примере

Evgenii Legotckoi
  • 14. Januar 2019 02:57

какая именно? написали бы сразу ))

Здравствуйте, у меня такая проблема: https://ibb.co/D1Y4L7g

Не могли бы вы помочь

index/ на конце url лишний у вас.

А для insta какую ссылку вставить? 'social:begin' instagram, instagram-oauth2 - не работают

Вы ключи-то для инстаграмма настроили?

Add instagram backend to AUTHENTICATION_SETTINGS:

AUTHENTICATION_SETTINGS = (
  ...
  'social_core.backends.instagram.InstagramOAuth2',
  ...
)

fill Client Id and Client Secret values in the settings:

SOCIAL_AUTH_INSTAGRAM_KEY = ''
SOCIAL_AUTH_INSTAGRAM_SECRET = ''

extra scopes can be defined by using:

SOCIAL_AUTH_INSTAGRAM_AUTH_EXTRA_ARGUMENTS = {'scope': 'likes comments relationships'}

Да это все я прописал и только это я и нашел в сети, я хотел узнать название ссылки

Evgenii Legotckoi
  • 29. März 2019 11:16
  • (bearbeitet)

Ну из того, что я нашёл в документации и в исходниках модуля, следует, что всё-таки instagram. То есть правильно писать так

{% url 'social:begin' 'instagram' %}

Если не работает, то причина скорее в чём-то другом. Данный url рендерится у вас на странице например?

http://localhost:8000/account/login/login/instagram/
No module named 'Social_core' Вот что пишет, а остальные работают в этом плане

Evgenii Legotckoi
  • 29. März 2019 17:01
  • (bearbeitet)

Покажите, что у вас записано в бэкендах

AUTHENTICATION_BACKENDS = (
    'social_core.backends.vk.VKOAuth2',        
    'django.contrib.auth.backends.ModelBackend',
)

Дело в том, что есть django-social-auth, а есть python-social-auth. Одно - это форк другого. Это одно и тоже по сути, только один вообще для всего, а второй специально для django заточен, но есть некоторые отличия у них, например в путях.

AUTHENTICATION_BACKENDS = (
    'social_core.backends.vk.VKOAuth2',          
    'django.contrib.auth.backends.ModelBackend', 
    'social_core.backends.facebook.FacebookOAuth2',
    'Social_core.backends.instagram.InstagramOAuth2',
)

Насколько помню, Джанговский бэкенд для аутентификации должен быть самым последним в этом списке

AUTHENTICATION_BACKENDS = (
    'social_core.backends.vk.VKOAuth2',  
    'social_core.backends.facebook.FacebookOAuth2',
    'Social_core.backends.instagram.InstagramOAuth2',
    'django.contrib.auth.backends.ModelBackend', 
)

У меня, честно говоря, с этим были проблемы я пока отключил его. Не могу зайти через обычные логин и пароль, выдает No module named 'Social_core'. Но и после этого также, также остается проблема с инстаграм

VP
  • 30. März 2019 21:55

Интересно, но вот никак не могу разобраться, как можно получить список хотя бы имён друзей пользователя?

Evgenii Legotckoi
  • 4. April 2019 15:35

Честно, этим не занимался, но для этого нужно добавлять дополнительные запросы на разрешение к доступу к списку друзей и т.д. Рекомендую вам обратиться к документации самого ВКонтакте.

m
  • 29. September 2019 07:39

Добрый день! Подскажите, пожалуйста, какие урлы для вк предоставляет эта батарейка? Не совсем понимаю,какой запрос мне надо отправить, чтобы авторизоваться и так далее...

Evgenii Legotckoi
  • 29. September 2019 08:14

Добрый день.
В данном примере все url подключаются в корень сайта.

urlpatterns = [
    ...
    path('', include('social_django.urls')),
]

Соответственно сразу для попытки логина нужно лишь написать следующий url /login/vk-oauth2

Остальные редиректы и прочее работает автоматически. Заводится с пол пинка. Если очень интересно, какие маршруты формируются, то в режиме дебага откройте несуществующую страницу, чтобы вызвать ошибку 404 и посмотрите там, какие url добавились.

url формируются в зависимости от того, где у вас подключаются маршруту данной батарейки в вашем сайте. Поэтому их начальная часть может выглядеть как угодно, чего я точно в вашем проекте знать не могу.

m
  • 29. September 2019 08:56

Спасибо за оперативный ответ!
Я сейчас разрабатываю приложение на андроид и параллельно пытаюсь писать сервер на джанго, поэтому запуталась, как к чему подключаться
Я правильно понимаю, что после успешной авторизации клиент должен отправить на сервер полученный токен и свой айди? И если да, то по какому адресу он должен это сделать?

Evgenii Legotckoi
  • 30. September 2019 03:33

Если честно то с авторизацией в мобильном приложении я не работал. Знаю, что для таких вещей используют батарейку Django Rest Framework, с помощью которого можно получить токена для самого сайта, чтобы идентифицировать пользователя приложения, и через него всё ходит. Но подробный процесс я не знаю, мобильными приложениями в этом ключе совсем не занимался.

КК
  • 15. Oktober 2019 08:55

Привет!!! Вопрос такой. Чтобы включить PostgreSQL, задайте настройку: SOCIAL_AUTH_POSTGRES_JSONFIELD = True. Сам вопрос: Где именно прописать или включить эту строчку???

КК
  • 15. Oktober 2019 08:57

Шаг 6 - Настройка ключей для ВКонтакте Где прописать вот эти строки SOCIAL_AUTH_VK_OAUTH2_KEY = 'XXXXXXX'
SOCIAL_AUTH_VK_OAUTH2_SECRET = 'XXXXXXXXXXXXXXXXXXXX'
Я так понимаю в в settings.py ???

КК
  • 15. Oktober 2019 09:00
  • (bearbeitet)

Шаг 8 - Добавление ссылки на маршрут
А теперь добавим ссылочку на маршрут где-нибудь в шаблоне, чтобы запускать авторизацию через ВКонтакте ---- (

<a href="/login/vk-oauth2"><img src="/static/lvk.png" class="avatar-3" data-toggle="tooltip" title="{% trans 'Login via VKontakte' %}"></a>

) В шаблоне самого сайта прописать это или страницы с аутентификацией ???

Добрый день.

1) В settings.py
2) Да, в settings.py
3) Где хотите, можете где-то в шаблоне, если вам нужна авторизация с любой страницы, либо только на странице аутентификации.

Спасибо!!! Буду пробовать)

КК
  • 15. Oktober 2019 20:22

После написания строчки SOCIAL_AUTH_POSTGRES_JSONFIELD = True появляется ошибка при создании локального сервера. from psycopg2.extras import DateRange, DateTimeTZRange, NumericRange
ModuleNotFoundError: No module named 'psycopg2'

КК
  • 15. Oktober 2019 20:24

Можно вообще проверить работоспособность на локальном джанго сервере?

Я так понимаю, вы используете пока на development машине SQLite базу данных, иначе у вас не возникло бы ни ошибки, ни вопросов по поводу этой ошибки.

Пакет устанавливается так

sudo pip install psycopg2 

Но для его использования и вообще использования данного функционала вам нужна база данных PostgreSQL, так что поднимайте на локальной машине базу данных.

Вот статья по развёртыванию Django с PostgreSQL , на локальной машине вам из той статьи будет самым интересным разделы с базой данных.

Что касается тестирования на локальной машине, то скорее всего нет. Поскольку VK должен делать правильный редирект и локальный сервер должен отвечать на внешний запрос. Полагаю, что у вас нет статического IP и редиректа до локального сервера. Так что проверить это можно в данном случае только на боевом сервере.

КК
  • 16. Oktober 2019 07:39

А тут можно ссылки на сторонний ресурс показывать? Нашёл на habr похожую статью, только там чуток отличается код и про локальный сервер написано, нужно чтоб кто то понимающий посмотрел и своё мнение высказал.

Если это не чистой воды спам, а по делу, то без проблем. Но в таком случае лучше создавайте отдельный вопрос на форуме . При создании вопроса есть поле, в котором можно указать статью, которая опубликована здесь, а в тексте вопроса уже ссылку на статью и развёрнутый вопрос, что вам там не ясно.

АМ
  • 25. Oktober 2019 07:33

{"error":"invalid_request","error_description":"redirect_uri has wrong domain, check application settings"} выводит такую ошибку

А что в настройках вашего приложения?
В ошибке написано, что у вас неправильные настройки домена и написано проверить настройки приложения.

A.
  • 6. November 2019 23:41

Читаю документацию по python-social-auth, пытаюсь понять как сохранить access_token в отдельном поле пользователя, чтобы потом иметь доступ к нему. Кто-нибудь знает как это сделать?) (access_token сохраняется после логина в поле extra_data)

Yk
  • 27. November 2019 08:03
  • (bearbeitet)
<a href="/login/vk-oauth2"><img src="/static/lvk.png" class="avatar-3" data-toggle="tooltip" title="{% trans 'Login via VKontakte' %}"></a>

Выкидывает исключение в шаблоне: Invalid block tag on line 16: 'trans'. Did you forget to register or load this tag?
Новичок, поэтому не понимаю, что здесь происходит. Если это получится исправить, то как затем реализовать log out со страницы?

Evgenii Legotckoi
  • 27. November 2019 08:09

Не подключили в шаблоне тег локализации

{% load trans from i18n %}

log out делается через url logout`а

views.py

@login_required
def logout(request):
    auth.logout(request)
    return redirect(get_next_url(request))

urls.py

# -*- coding: utf-8 -*-

from django.urls import path

from accounts import views

app_name = 'accounts'
urlpatterns = [
    # Другие url
    path('logout/', views.logout, name='logout'),
    # Другие url
]
Yk
  • 27. November 2019 08:34
  • (bearbeitet)

Когда мы нажимаем на картинку, нас должно перенаправить на окно ввода для аутентификации. Но так как ничего не происходило, добавил шаблон и прикрутил что-то подобное, ожидая чуда, увы. Page not found

def login(request):
    auth.login(request)
    return render(request, "index.html")


path('login/', views.login, name='login'),

UPD: Вообщем, программирование не мое, впустую потраченные нервы

progammist
  • 12. April 2020 09:53
  • (bearbeitet)

Есть профиль пользователя, в нем вывожу image, username, email.

Ребята и админ, подскажите пж как добавить(обновлять) image в профиль при авторизации в вк:
Uername,email при авторизации получает отлично, а вот как image обновлять - не получается.

Модель User (model.py):

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    image = models.ImageField(default='default.jpg', upload_to='profile_pics',)

    def __str__(self):
        return f'{self.user.username} Profile'

    def save(self, *args, **kwargs):
        super(Profile, self).save(*args, **kwargs)

        img = Image.open(self.image.path)

        if img.height > 300 or img.width > 300:
            output_size = (300, 300)
            img.thumbnail(output_size)
            img.save(self.image.path)

В шаблоне фото профиля вывожу:

 <img class="" src="{{ user.profile.image.url }}" >
Evgenii Legotckoi
  • 13. April 2020 08:47

Тут скорее вопрос в том, чтобы правильно настроить бэкенд авторизации, а не к самой модели данных профиля.

progammist
  • 13. April 2020 09:09
  • (bearbeitet)

Вы на своей практике выводили img от пользователя при авторизии через соц. сеть?) мнеб пример хоть посмотреть

Evgenii Legotckoi
  • 13. April 2020 09:13

Честно, не доводилось )))
Мысли были, но нет. Но вообще, там нужно запрашивать права доступа на изображение через OAuth, по идее фотография туда же относится. Для этого нужно настраивать соответственно бэкенд аутентификации. Также нужно правильная обработка запрос изображения.
Полагаю, что его копировать нужно будет с социальной сети на сайт.
Если заморочусь с этим, то пожалуй, напишу статью

progammist
  • 13. April 2020 11:45

Будет интересно, потому что на просторах рунета нет такой статьи

progammist
  • 23. April 2020 12:01
  • (bearbeitet)

Подскажите пожалуйста, сделал функцию (функция не входит в class Profile, просто отдельная):

models.py #путь users/models.py

def get_avatar(backend, response, user=None, *args, **kwargs):

    url = None

    if backend.name == 'vk-oauth2':
        url = response.get('photo', '')

    if url:
        user.avatar = url
        user.save()
        print (user.avatar)

Функция получает url адрес изображения при авторизации. Выводит в консоль url. Пример URL:

https://sun9-12.userapi.com/c852132/v852132234/118b6c/aB0GoDEWzaw.jpg

Работает. НО!

Как мне получить/вывести это в шаблоне???

<img src="{{user.avatar}}">

почему-то не работает. Модели user.avatar у меня нет. Может быть в синтаксесе ошибся? Нид хелп

Evgenii Legotckoi
  • 24. April 2020 02:51

Наверное, было бы лучше, если бы вы создали отдельное обсуждение на форуме )))
Но у меня вот вопрос, а вы как-то модифицировали саму модель пользователя? Просто у вас есть модель профиля, но кода модели пользователя я не вижу.
А поля avatar в модели пользователя не существует. Так что метод save ничего не сохраняет, по крайней мере в рамках того, что я увидел в вашем коде.

progammist
  • 24. April 2020 05:46
  • (bearbeitet)

Никак не модифицировал, есть только class Profile
Может быть можно как-то добавить поле avatar к классу profile?
Как создать модель пользователя? Может быть можно изменить функцию, которая будет обновлять profile, с полем avatar
Короче я запутался)
Создал обсуждение: https://evileg.com/ru/forum/topic/1321/

Evgenii Legotckoi
  • 24. April 2020 05:49

Понятно. После работы отпишусь в том обсуждении. У меня модель пользователя переопределена.
Но можете добавить avtar и модели profile, у меня изначально много было сделано через profile, но в связи с выводом части кода в open source я перешёл на переопределение модели пользователя.

progammist
  • 24. April 2020 06:02
  • (bearbeitet)

Ок, ответил в том обсуждении, добавил поле avatar в Profile, теперь не знаю как это в функции отобразить)

У меня модель пользователя переопределена.

А в чем заключается преимущество её переопределении, зачем её переопределять?

Evgenii Legotckoi
  • 24. April 2020 07:40

Удобство, организация структуры базы данных. Мне лично проще добавить некоторые методы в модель User, чтобы напрямую их вызывать в шаблонах, чем городить огород из шаблонных тегов.

progammist
  • 24. April 2020 11:28

Как будет время, можете показать пример как можно предопределить модель User?)

Evgenii Legotckoi
  • 26. April 2020 15:09

Можете почитать об этом в этой статье Django - Урок 052. Переопределение модели пользователя

Выскочила ошибка при клике на регистрацию:

TypeError at /complete/vk-oauth2/
from_db_value() missing 1 required positional argument: 'context'

шаблон:

{% block content %}
<a href="/login/vk-oauth2">Войти через Вконтакте</a>
{% endblock content %}

Сори забыл включить виртуальное окружение)

АЛ
  • 29. Mai 2020 06:24
  • (bearbeitet)

Здравствуйте! После клика на ссылку авторизации выдает json словарь с ошибкой:

{"error":"invalid_request","error_description":"redirect_uri is incorrect, check application redirect uri in the settings page"}

где искать ошибку?

Неправильно прописали URL, на который возвращается ответ от OAuth ВКонтакте.
Настраивайте ваше приложение в консоли разработчика ВКонтакте

YE
  • 4. November 2020 06:55

Евгений, а данныя батарейка поддерживает возможность, привязать ВК и т.д. уже после прохождения регистрации?

ДТ
  • 4. November 2020 10:21

Возможно, автор прочитает. Делал авторизацию с помощью ВК по книге Дронова. Выдает ошибку "Backend not found". Стал гуглить, нашел вашу статью, вроде почти то же самое (оно и понятно, документация-то одна и та же), но есть и отличия. Поправил как у вас, всё равно не работает.
Понимаю, что это либо что-то с бекендами, либо с urls.py.
У меня вот так:

AUTHENTICAL_BACKENDS = (
    'social_core.backends.vk.VKOAuth2',
    'django.contrib.auth.backends.ModelBackend',

)
'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'social_django.context_processors.login_redirect',
                'social_django.context_processors.backends',
            ],
        },
path('social/', include('social_django.urls', namespace='social'))

Вопрос 1, дурацкий)) Почему не работает?
Вопрос 2. У вас urls уровня приложения или проекта? У меня не работает ни так, ни так.

Evgenii Legotckoi
  • 28. Januar 2021 04:29

Если email совпадает с тем, что в ВК, то автоматически привязывает. Если нет, то создаёт новый аккаунт.

У меня urls на уровне приложения и записаны сейчас так

path('', include('social_django.urls')),
A
  • 28. April 2021 01:25
  • (bearbeitet)

после того как дам разрешение для просмотра моего емайл, вот такая ошибка:
AuthForbidden at /social-auth/complete/vk-oauth2/
Your credentials aren't allowed

Вот сетингс:
SOCIAL_AUTH_VK_OAUTH2_KEY = 'блабла'
SOCIAL_AUTH_VK_OAUTH2_SECRET = 'кей и сикрет точно введены'
SOCIAL_AUTH_VK_OAUTH2_SCOPE = ['email']
LOGIN_REDIRECT_URL = '/'

Evgenii Legotckoi
  • 2. Juli 2021 05:09

Может быть домен не разрешен в самом приложении. Иногда бывает случайно происходит и пропадает через некоторое время - какие-то неполадки со стороны соц сетей

AF
  • 29. Oktober 2021 09:44

Евгение не знаете как исправить ошибку при авторизации через вк пишет Invalid request: versions below 5.81 are deprecated. Version param should be passed as "v".

q
  • 20. Dezember 2021 06:08

Добавь в setting.py строку: SOCIAL_AUTH_VK_OAUTH2_API_VERSION = '5.81'

ВБ
  • 24. Januar 2022 11:37
  • (bearbeitet)

Доброго времени суток, вроде все прописал, подключил, но после того как нажал кнопочку "Разрешить" при редиректе выпадает вот что :
ModuleNotFoundError at /complete/vk-oauth2/
No module named 'social'
Исключение возникает здесь :venv/lib/python3.8/site-packages/social_core/utils.py, line 52, in import_module

Подскажите как исправить. Заранее спасибо.

DC
  • 5. Mai 2022 06:01

Получаю ошибку:

InvalidURL at /complete/vk-oauth2/
Failed to parse: https://oauth.vk.com/access_token
Request Method: GET
Request URL: http:// /complete/vk-oauth2/?redirect_state= &state=
Django Version: 4.0.4
Exception Type: InvalidURL
Exception Value:
Failed to parse: https://oauth.vk.com/access_token
Exception Location: /usr/local/lib/python3.8/dist-packages/requests/models.py, line 384, in prepare_url
Python Executable: /usr/bin/python3
Python Version: 3.8.10
Python Path:
['/root/web',
'/usr/lib/python38.zip',
'/usr/lib/python3.8',
'/usr/lib/python3.8/lib-dynload',
'/root/.local/lib/python3.8/site-packages',
'/usr/local/lib/python3.8/dist-packages',
'/usr/lib/python3/dist-packages']
Server time: Thu, 05 May 2022 09:57:44 +0000

и совершенно не понимаю, в чём может быть проблема

Kommentare

Nur autorisierte Benutzer können Kommentare posten.
Bitte Anmelden oder Registrieren
Letzte Kommentare
ИМ
Игорь Максимов5. Oktober 2024 07:51
Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55. Juli 2024 11:02
QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssr8. Februar 2024 18:43
Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
EVA
EVA25. Dezember 2023 10:30
Boost - statisches Verknüpfen im CMake-Projekt unter Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
Jetzt im Forum diskutieren
J
JacobFib17. Oktober 2024 03:27
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
JW
Jhon Wick1. Oktober 2024 15:52
Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
КГ
Кирилл Гусарев27. September 2024 09:09
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
F
Fynjy22. Juli 2024 04:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Folgen Sie uns in sozialen Netzwerken