장고의 Google 캘린더에서 내 일정을보고 싶었는데 google-api-python-client를 설치하고 json 파일을 다운로드 한 후 quickstart example을 실행 해 보았습니다.장고에서 Google 캘린더 API로 작업하기
"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
내가 settings.py
뷰에서 GOOGLE_OAUTH2_CLIENT_ID
및 GOOGLE_OAUTH2_CLIENT_SECRET
댓글을 달았 후에도 : python manage.py makemigrations
을 실행할 때
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의 구성에 갇혀 있다고 생각하지만 여전히 @ Mr.Rebot을 설명하는 단계에 도달하지 못했습니다. [docs] (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을 지정하십시오. –