В начале я хотел просмотреть мои события из Google Calendar в Django, я пробовал quickstart example, запустил успешно, после установки google-api-python-client и загрузки json-файла.Работа с календарем Google api в Django
Я следовал за Google's example page, образец не похоже на работу, я получил эту ошибку при запуске python manage.py makemigrations
:
"Must specify either GOOGLE_OAUTH2_CLIENT_SECRETS_JSON, or "django.core.exceptions.ImproperlyConfigured: Must specify either GOOGLE_OAUTH2_CLIENT_SECRETS_JSON, or both GOOGLE_OAUTH2_CLIENT_ID and GOOGLE_OAUTH2_CLIENT_SECRET in settings.py
Даже после того, как я заметил, GOOGLE_OAUTH2_CLIENT_ID
GOOGLE_OAUTH2_CLIENT_SECRET
и от settings.py
просмотров .py:
CLIENT_SECRETS = os.path.join(os.path.dirname(__file__), '..', 'client_secret.json')
FLOW = flow_from_clientsecrets(
CLIENT_SECRETS,
scope='https://www.googleapis.com/auth/calendar.readonly',
redirect_uri='http://www.notify-me.ua:8000/complete/google-oauth2/')
@login_required
def home(request):
storage = Storage(CredentialsModel, 'id', request.user, 'credential')
credential = storage.get()
if credential is None or credential.invalid == True:
FLOW.params['state'] = xsrfutil.generate_token(settings.SECRET_KEY,
request.user)
authorize_url = FLOW.step1_get_authorize_url()
return HttpResponseRedirect(authorize_url)
else:
http = httplib2.Http()
http = credential.authorize(http)
service = build("calendar", "v3", http=http)
now = datetime.datetime.utcnow().isoformat() + 'Z'
eventsResult = service.events()
return render(request, 'home.html', {
'eventsResult': eventsResult,
})
@login_required
def auth_return(request):
if not xsrfutil.validate_token(settings.SECRET_KEY, request.REQUEST['state'], request.user):
return HttpResponseBadRequest()
credential = FLOW.step2_exchange(request.REQUEST)
storage = Storage(CredentialsModel, 'id', request.user, 'credential')
storage.put(credential)
return HttpResponseRedirect("/")
models.py:
from django.db import models
from django.contrib.auth.models import User
from oauth2client.contrib.django_util.models import CredentialsField
class CredentialsModel(models.Model):
id = models.ForeignKey(User, primary_key=True)
credential = CredentialsField()
Я хочу, чтобы просто просмотреть мои события из календаря Google.
Думаю, что я застрял в конфигурациях oauth2client, до сих пор не дошел до того, что вы объясняете @ Mr.Rebot. Я внесу некоторые изменения из [docs] (http://oauth2client.readthedocs.io/en/latest/source/oauth2client.contrib.django_util.html) и посмотрю. –
Вы разместили client_secret.json в своем проекте? –
Если нет, поместите свой client_secret.json в свой проект или укажите GOOGLE_OAUTH2_CLIENT_ID и GOOGLE_OAUTH2_CLIENT_SECRET в settings.py. –