Использование google api в django
Я пытаюсь связать события в проекте py с календарем google. мое приложение не использует логин google, так как оно предназначено только для небольшой группы людей. Я уже несколько часов ищу, как это сделать, но ничего не получается. Любая помощь будет оценена по достоинству.
models.py
class AgendaClient(models.Model): # used to store info(same as enviroment variables)
name = models.CharField(max_length=30, null=True, blank=True, unique=True)
json = models.TextField(blank=True, null=True)
class Event(models.Model):
summary = models.CharField(max_length=50, choices=EVENT_CHOICES)
description = models.CharField(max_length=50, null=True, blank=True)
start_date = models.DateField()
google_link = models.CharField(max_length=150, null=True, blank=True)
signals.py
В идеале, я бы использовал сервисную учетную запись, чтобы пользователям не нужно было входить в google. Возможно, кто-то знает лучшее решение, чем это, но по сути сайт должен иметь возможность добавлять события в календарь, за которым могут следить пользователи, но не добавлять события в календарь каждого пользователя
Основной причиной вашей проблемы является то, что вы пытаетесь смешать авторизацию учетной записи службы и авторизацию установленного приложения в одном коде.
Что касается части вашего кода, касающейся учетных записей служб, помните, что для учетных записей служб в календаре Google используется учетная запись рабочего пространства Google. Убедитесь, что вы правильно настроили делегирование пользователю на вашем домене, в качестве которого вы хотите делегировать учетную запись службы.
from google.oauth2 import service_account
SCOPES = ['https://www.googleapis.com/auth/sqlservice.admin']
SERVICE_ACCOUNT_FILE = '/path/to/service.json'
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
delegated_credentials = credentials.with_subject('user@example.org')
После поиска везде, где только можно, я нашел ответ. Я разместил его в разделе Google Calendar Integration with Django, потому что именно там я получил большую часть необходимой информации
Спасибо за помощь