作为一个开始,我想在Django的谷歌日历中查看我的事件,我试过quickstart example,安装google-api-python-client并下载json文件后,运行成功。在Django中使用谷歌日历api
我跟着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()
我想简单地查看来自谷歌日历我的事件。
我觉得我被困在oauth2client的配置中,仍然没有达到你解释@Rebot先生的步骤。我会对[文档](http://oauth2client.readthedocs.io/en/latest/source/oauth2client.contrib.django_util.html)进行一些更改,然后参阅。 –
你把client_secret.json放在你的项目中了吗? –
如果没有,请将您的client_secret.json放入您的项目中,或在settings.py中指定GOOGLE_OAUTH2_CLIENT_ID和GOOGLE_OAUTH2_CLIENT_SECRET。 –