Django 5 для начинающих

Прогресс по курсу:  9/1004

7.5 Авторизация через социальные сети посредством OAuth 2.0
3 из 3 шагов пройдено

Google-аутентификация

Сначала перейдите на Google Cloud Platform, чтобы создать проект. Название проекта не имеет значения, хотя может быть полезно назвать проект так, чтобы он согласовывался с веб-сайтом, который вы собираетесь использовать.

Проект - это контейнер, в котором будет размещен идентификатор клиента OAuth 2.0.

Теперь, когда мы создали проект, давайте перейдем к экрану Api-сервисов и создадим идентификатор клиента OAuth, используя раскрывающийся список:


После перехода вы увидите такое окно, нажимаем на кнопку:


Тип пользователя, который вам потребуется, будет External:


На следующей странице, все что действительно требуется заполнить здесь, это имя(которое может быть любым) и ваш адрес электронной почты.

Заполняем и жмем Save and continue несколько раз, и в итоге мы окажемся на данной странице:


Переходим снова в раздел Credentials, и переходим по следующей ссылке:


Application type выбираем как Web application и вводим Authorized redirect URIs данную ссылку: http://127.0.0.1:8000/oauth/complete/google-oauth2/


В результате мы получаем Client ID и Client secret, который нам нужно добавить в наш settings.py:

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = 'xxxxxxxxxxxxxxxx'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = 'xxxxxxx'


Перейдите к login.html и добавьте рядом с ссылкой авторизации через GitHub следующий код:

    <br><a href="{% url 'social:begin' 'google-oauth2' %}">Log In with Google</a>


У нас все готово, давайте проверим, перейдём по адресу http://127.0.0.1:8000/accounts/login/ и мы видим ссылку на социальную авторизацию через Google:

При нажатии на ссылку, мы, по аналогии с GitHub, авторизуемся в нашем блоге.


Как только вы настроите свою первую социальную аутентификацию, процесс будет несколько похож на другие социальные сети, такие как VK, Twitter или Facebook.


  • Комментария
Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий

C google не получилось. 

Поправка: сначала не получилось) Выкинула /:8000 из uri, который честно списала с картинки урока, хотя удивилась - зачем оно там.

 

 

Изменен Ольга Миронова

@Ольга_Миронова, исправил скрин, спасибо за помощь.

При статусе в In production, все работает как надо заходит и выходит под любым аккаунтом!

Изменен No Name

Здравствуйте, Илья. Решил немного "пошалить" и реализовал соц. аутентификацию через VK. Все работает, но вместо имени пользователя, в сайдбаре после слова Hi выводится мой id в ВК. Не знаете, как это исправить? 

@Агаси_Мироян, скорее всего VK в качестве username возвращает id аккаунта. Попробуйте вывести как first_name и last_name. Если не получится, попробую разобраться.

@Илья_Перминов, получилось, спасибо большое! Ну и знания у Вас.  Кстати, если вдруг кому понадобится, вот мой код:

<hr>

    {% if user.is_authenticated %}

        {% if user.first_name %}

            Hi {{ user.first_name }} {{ user.last_name }}!

        {% else %}

            Hi {{ user.username }}!

        {% endif %}

        <p><a href="{% url 'users-profile' %}">My profile</a></p>

        <p><a href="{% url 'logout' %}">Log out</a></p>

    {% else %}

        <p>You are not logged in</p>

        <a href="{% url 'login' %}">Log In</a>

         |

        <a href="{% url 'signup' %}">Sign Up</a>

    {% endif %}

    <hr>
Изменен Илья Перминов

Вопрос по Google авторизации.
Что-то странное получается при выборе пользователя категории External. Получается, что если не добавлять никого из разрешенных пользователей для тестирования приложения, то и никто не сможет авторизоваться. Другими словами - авторизоваться сможет только тот, кого явно указали при организации google-приложения. Это нормально???

Изменен Евгений Куликов

@Евгений_Куликов, Publishing status измените с Testing на PUBLISH APP. Но возможно потребуется модерация от гугла, которую не пройти на локалхосте.

Изменен Илья Перминов

@Илья_Перминов, Все понял. Я так и предположил, что Google вряд ли для localhost откроет доступ. Проверю, когда дойду до деплоя проекта на реальный хостинг.