Google 캘린더 통합의 Django 기반 완전 본격적인 예가 있습니까? Google's example page을 통해 읽었지만 하단의 링크가 오래된 것입니다.Google 캘린더와 Django의 통합
나는 Google의 예가 액세스 토큰을 얻는 방법에만 초점을 맞추기 때문에 특별히 새로 고침 토큰을 사용하는 데 어려움을 겪고 있습니다.
@staff_member_required
def authorize_access(request):
return redirect(get_flow(request).step1_get_authorize_url())
@staff_member_required
def oauth2_callback(request):
credentials = get_flow(request).step2_exchange(request.GET['code'])
store = get_store()
store.put(credentials)
credentials.set_store(store)
return redirect('...')
def get_flow(request):
flow = client.flow_from_clientsecrets(os.path.join(CREDENTIAL_DIR, CLIENT_SECRET_FILE),
SCOPES,
redirect_uri='%s://%s/google-calendar/oauth2-callback/' % (request.META['wsgi.url_scheme'], request.META['HTTP_HOST'],))
flow.params['access_type'] = 'offline'
flow.params['approval_prompt'] = 'force'
return flow
def get_store():
return oauth2client.file.Storage(os.path.join(CREDENTIAL_DIR, ACCESS_TOKEN_FILE))
def has_valid_api_credentials():
credentials = get_store().get()
return credentials is not None
def build_service():
credentials = get_store().get()
if not credentials:
return None
elif credentials.access_token_expired:
http = credentials.refresh(httplib2.Http())
http = get_store().get().authorize(http)
else:
http = credentials.authorize(httplib2.Http())
service = discovery.build('calendar', 'v3', http=http)
return service
def create_events(rental_request):
service = build_service()
event = service.events().insert(...).execute()
대단히 고마워요! 요즘 Google은 JSON 키 형식을 기본값으로 사용하므로 'credentials = ServiceAccountCredentials.from_p12_keyfile (service_account_email = service_account_email, filename = CLIENT_SECRET_FILE, scopes = SCOPES)'에서 'credentials = ServiceAccountCredentials.from_json_keyfile_name (filename = < JSON 형식으로 키의 파일 이름>, scopes = SCOPES)' –