2013-08-19 51 views
2

我想從我的日曆到我的Python程序的事件列表,我無法理解給我的谷歌oauth海量文檔。如何使用谷歌日曆API與python

這是我正在嘗試的代碼。它的一半和peices。誰能幫我解決這個

import gflags 
import httplib2 

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


flow = flow_from_clientsecrets('client_secrets.json', 
           scope='https://www.googleapis.com/auth/calendar', 
           redirect_uri='http://example.com/auth_return') 

http = httplib2.Http() 
http = credentials.authorize(http) 

service = build(serviceName='calendar', version='v3', http=http, 
     developerKey='AI6456456456456456456456456456yKhI') 

events = service.events().list(calendarId='[email protected]').execute() 
print events 

的事情是我怎樣才能從我流的憑據對象

我已經創建了API控制檯項目並添加日曆API給它。把這些放在clients.json中。

我不希望瀏覽器重定向和我想要訪問的日曆。我不希望用戶訪問他們的日曆,但我的日曆,以便我可以在網站上發佈我的活動。

我不知道爲什麼我一定要使用OAuth的acessing我的日曆

回答

2

如果我沒有記錯的話,你可以使用V2 API(不推薦),它允許不使用OAuth登錄。對於V3這是我對認證流程和它的作品(注意,我不使用flow_from_clientsecrets):

import gflags 
from oauth2client.file import Storage 
from oauth2client.client import OAuth2WebServerFlow 

flags = gflags.FLAGS 
flow = OAuth2WebServerFlow(
     client_id = 'some_id.apps.googleusercontent.com', 
     client_secret = 'some_secret-32ijfsnfkj2jf', 
     scope='https://www.googleapis.com/auth/calendar', 
     user_agent='Python/2.7') 

# to get a link for authentication in a terminal, 
# which needs to be opened in a browser anyway 
flags.auth_local_webserver = False 

# store auth token in a file 'calendar.dat' if it doesn't exist, 
# otherwise just use it for authentication 
base = os.path.dirname(__file__) 
storage = Storage(os.path.join(base, 'calendar.dat')) 
credentials = storage.get() 
if credentials is None or credentials.invalid == True: 
    credentials = run(FLOW, storage) 

http = httplib2.Http() 
http = credentials.authorize(http) 
service = build(serviceName='calendar', version='v3', http=http, 
    developerKey='AI6456456456456456456456456456yKhI') 

,然後用service溝通。請注意,此代碼可能缺少一些導入。如果我沒有記錯,如果您正在訪問您的主日曆,則無需提供日曆ID。

我希望它有幫助。

+1

謝謝你。 1.)我得到這個警告'警告:root:這個函數,oauth2client.tools.run()和gflags庫的使用已被棄用,並且將在未來的版本中被刪除。「是否有任何那裏有新的方法。 2)我正在從命令行運行python程序,並要求輸入驗證碼。我如何獲得該代碼。我無法登錄沒有驗證碼。你如何使用他的程序 – user26

+0

爲1.)你可以使用'run_flow'從相同的工具包,它採用相同的參數,我相信。對於2.)我認爲你完全可以繞過瀏覽器交互。您需要至少通過瀏覽器授予訪問您的應用程序的權限,然後爲您提供訪問代碼(如果您未更改默認設置,請通過瀏覽器使用'redirect_uri = oob') –

+1

TypeError:run_flow()至少需要3參數(2給出) – elexhobby