【发布时间】:2020-01-05 06:59:49
【问题描述】:
我想在 django 中获取我的用户的谷歌日历事件,我编写了以下代码。此代码有效并保存用户的访问令牌,但我不知道我应该怎么做才能在它之后获取用户的谷歌日历事件。 在此之前我遇到了一些问题,并在this question 中询问并试图解决它,现在我在这里。 有人能帮我吗?
在网址中:
url(r'^new_event/$', views.new_event, name="new_event"),
url(r'^oauth2_callback', OAuth2CallBack.as_view(), name='oauth2_callback'),
url(r'^access_to_google_calendar$', views.access_to_google_calendar,
name="access_to_google_calendar"),
在视图中:
def access_to_google_calendar(request):
# Following line is for getting google calendar events of user to show him
flow = OAuth2WebServerFlow(settings.CLIENT_ID_CALENDAR,
settings.CLIENT_SECRET_CALENDAR,
scope='https://www.googleapis.com/auth/calendar',
redirect_uri=settings.REDIRECT_URI_CALENDAR)
generated_url = flow.step1_get_authorize_url()
return HttpResponseRedirect(generated_url)
class OAuth2CallBack(View):
def get(self, request, *args, **kwargs):
code = request.GET.get('code', False)
if not code:
return JsonResponse({'status': 'error, no access key received from Google or User declined permission!'})
flow = OAuth2WebServerFlow(settings.CLIENT_ID_CALENDAR, settings.CLIENT_SECRET_CALENDAR,
scope='https://www.googleapis.com/auth/calendar',
redirect_uri=settings.REDIRECT_URI_CALENDAR)
credentials = flow.step2_exchange(code)
http = httplib2.Http()
http = credentials.authorize(http)
credentials_js = json.loads(credentials.to_json())
access_token = credentials_js['access_token']
# Store the access token in case we need it again!
username = request.user.username
with open('token.csv', 'w') as file:
fieldnames = ['user', 'token']
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({'user': username, 'token': access_token})
request.session['access_token'] = access_token
return redirect('new_event')
def post(self, request, *args, **kwargs):
return HttpResponseNotAllowed('Only GET requests!')
def new_event(request):
# Here how to get google event of user?????
【问题讨论】:
-
哪里可以联系到你?
标签: python django google-api google-calendar-api google-api-python-client