2012-10-11 54 views
1

我刚刚写了此代码,该代码应该检查日历是否存在以及是否创建日历。那么它会在我尝试创建日历并且日历不显示时返回错误404。有任何想法吗?我删掉了密码,秘密,应用程序密钥。使用Google日历API创建日历时出现404错误代码

  import gflags 
      import httplib2 
      import sys, traceback 

      from apiclient.discovery import build 
      from oauth2client.file import Storage 
      from oauth2client.client import OAuth2WebServerFlow 
      from oauth2client.tools import run 

      FLAGS = gflags.FLAGS 

      # Set up a Flow object to be used if we need to authenticate. This 
      # sample uses OAuth 2.0, and we set up the OAuth2WebServerFlow with 
      # the information it needs to authenticate. Note that it is called 
      # the Web Server Flow, but it can also handle the flow for native 
      # applications 
      # The client_id and client_secret are copied from the API Access tab on 
      # the Google APIs Console 
      FLOW = OAuth2WebServerFlow(
        client_id='MY_CLIENT_ID', 
        client_secret='MY_SECRET', 
        scope='https://www.googleapis.com/auth/calendar', 
        user_agent='KUDOS_CALENDAR/v1') 

      # To disable the local server feature, uncomment the following line: 
      # FLAGS.auth_local_webserver = False 

      # If the Credentials don't exist or are invalid, run through the native client 
      # flow. The Storage object will ensure that if successful the good 
      # Credentials will get written back to a file. 
      storage = Storage('calendar.dat') 
      credentials = storage.get() 
      if credentials is None or credentials.invalid == True: 
       credentials = run(FLOW, storage) 

      # Create an httplib2.Http object to handle our HTTP requests and authorize it 
      # with our good Credentials. 
      http = httplib2.Http() 
      http = credentials.authorize(http) 

      # Build a service object for interacting with the API. Visit 
      # the Google APIs Console 
      # to get a developerKey for your own application. 
      service = build(serviceName='calendar', version='v3', http=http, 
         developerKey='MY_DEV_KEY') 
      kudos_calendar = None 
      try: 
       kudos_calendar = service.calendarList().get(calendarId='KudosCalendar').execute() 
      except: 
       print 'Calendar KudosCalendar does not exist!' 
       print 'Creating one right now...' 
       kudos_calendar_entry = { 
        'id': 'KudosCalendar' 
       } 

       kudos_calendar = service.calendarList().insert(body=kudos_calendar_entry).execute() 
+0

这是很难诊断,没有更多的细节,如看到您的帐户中的实际信息,但我建议你看看你的日历列表。我猜想的是,你第一次跑你时创建了'KudosCalendar',然后每次测试代码时,你都试图在已经创建的旧的日历上创建一个新的日历。您可能必须使用该ID删除旧日历才能创建一个新日历。 – jdotjdot

+0

嗨jdotjdot,我也这么认为,但我看着我的日历列表和KudosCalendar不存在... – siemanko

回答

0

好的,我找到了一个方法。我不确定谷歌抽象反映的究竟是什么,但我非常肯定,不能仅仅创建日历列表​​。但是,如果您只是创建日历,那么一切都会正常,然后可以使用日历ID访问与该日历相对应的日历条目。

Ufff ..可怕的混乱。同时试图这样做,我发现在文档中给出的示例python代码中至少有两个错误。我认为他们仍然没有正确推出v3。