As a start I wanted to view my events from google calendar in Django, I tried the quickstart example, run successfully, after installing the google-api-python-client and downloading the json file.
I followed the Google's example page, the sample didn't seem to work, I got this error when running 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
Even after I commented GOOGLE_OAUTH2_CLIENT_ID and GOOGLE_OAUTH2_CLIENT_SECRET from settings.py
views.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()
I want to simply view my events from google calendar.