Как реализовать вход в Google для любых API Google в веб-приложении Django?

В настоящее время я разрабатываю веб-приложение Django, которое позволит пользователям входить в свою учетную запись Google и получать доступ к своим данным Google Calendar и Google Drive.

Мне уже удалось сделать это в другом проекте в контексте внешнего интерфейса с использованием библиотеки Angular под названием ng-gapi (GoogleAuthService), но я не могу найти эквивалент для Django! Все, что я смог сделать на данный момент, это реализовать простой вход в систему Google, но я не могу взаимодействовать с различными API Google.

Я попытался использовать модуль под названием django-allauth, но он только регистрирует пользователя через Google, но не предоставляет никакой полезной информации (например, токены авторизации и т. д.), необходимой для предоставления веб-приложению для связи с данными пользователя Google.

{% load socialaccount %}
{% providers_media_js %}
{% load static %}
<html>

    <body>

        {% if user.is_authenticated %}
        <p>Welcome {{ user.username }}</p>
        <a class="btn btn-warning" href="http://localhost:8000/accounts/logout/">Log out</a>
        <a class="btn btn-secondary" href="http://localhost:8000/show/">My Gigs</a>
        <p>You're logged in with {{ user.get_provider }} as {{ user }}.</p>
        <img style="max-width: 80px; padding:10px; margin-bottom:10px" src="{{ user.socialaccount_set.all.0.get_avatar_url }}" />
        <p>UID: {{ user.socialaccount_set.all.0.uid }}</p>      
        <p>Date Joined: {{ user.socialaccount_set.all.0.date_joined}}</p>
        <p>Last Login: {{ user.socialaccount_set.all.0.last_login}}</p>   
        <p>{{ user.socialaccount_set.all.0.extra_data.name }}</p> 

        {% else %}
        <a class="btn btn-primary" href="{% provider_login_url 'google' %}">Log in</a>
        {% endif %}

    </body>
</html>

Когда я пытаюсь войти в систему таким образом, я получаю страницу входа в Google, которая работает хорошо, но у меня нет второго окна, которое должно было бы относиться к пользователю, предоставляющему моему веб-приложению доступ к его Календарь Google и данные Google Диска (хотя я уже настроил их в своей консоли разработчика Google).

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


person mistermanugo    schedule 26.08.2019    source источник


Ответы (1)


Вы можете использовать библиотеку социальной аутентификации Django

Пример реализации здесь

Вы должны разрешить доступ к календарю Google и дисковому API из GOOGLE API CONSOLE.

person Albin Antony    schedule 27.08.2019