0
我有這裏描述的代碼。 我需要在日曆中創建大量活動。在Python API中使用2段python
我無法找到使其工作的方法。使用2條腿似乎被棄用
import sys
import httplib2
from rfc3339 import rfc3339
from apiclient.discovery import build
from oauth2client.file import Storage
from oauth2client.client import AccessTokenRefreshError
from oauth2client.client import flow_from_clientsecrets
from oauth2client.tools import run
import pytz
import datetime
import time
start_zone = pytz.timezone('Europe/London')
end_zone = pytz.timezone('Europe/Oslo')
start_time = datetime.datetime(2013,8,13,15,0, tzinfo=start_zone)
end_time = datetime.datetime(2013,8,16,19,0, tzinfo=end_zone)
flow = flow_from_clientsecrets('client_secrets.json',
scope='https://www.googleapis.com/auth/calendar',
redirect_uri='http://localhost')
storage = Storage('credentials.dat')
credentials = storage.get()
if credentials is None or credentials.invalid:
credentials = run(flow, storage)
http = httplib2.Http()
http = credentials.authorize(http)
service = build('calendar', 'v3', http=http)
try:
event = {
'start': {
'dateTime': start_time
},
'end': {
'dateTime': end_time
},
"summary": "New event",
"location": "Paris, FRANCE"
}
service.events().insert(calendarId='primary', body=event).execute()
print "END"
except AccessTokenRefreshError:
print ('Credentials have been revoked')
我已經這樣更新了我的代碼(因爲我沒有重定向)
#!/usr/bin/python
import sys
import httplib2
from rfc3339 import rfc3339
from apiclient.discovery import build
from oauth2client.file import Storage
from oauth2client.client import AccessTokenRefreshError
from oauth2client.client import flow_from_clientsecrets
from oauth2client.tools import run
import pytz
import datetime
import time
start_zone = pytz.timezone('Europe/London')
end_zone = pytz.timezone('Europe/Oslo')
start_time = datetime.datetime(2013,8,13,15,0, tzinfo=start_zone)
end_time = datetime.datetime(2013,8,16,19,0, tzinfo=end_zone)
flow = flow_from_clientsecrets('client_secrets.json',
scope='https://www.googleapis.com/auth/calendar',
redirect_uri='urn:ietf:wg:oauth:2.0:oob')
auth_uri = flow.step1_get_authorize_url()
print('Visit this site!')
print(auth_uri)
code = raw_input('Insert the given code!')
credentials = flow.step2_exchange(code)
print(credentials)
with open('credentials.dat', 'wr') as f:
f.write(credentials.to_json())
storage = Storage('credentials.dat')
credentials = storage.get()
if credentials is None or credentials.invalid:
credentials = run(flow, storage)
http = httplib2.Http()
http = credentials.authorize(http)
service = build('calendar', 'v3', http=http)
try:
event = {
'start': {
'dateTime': start_time
},
'end': {
'dateTime': end_time
},
"summary": "New event",
"location": "Paris, FRANCE"
}
service.events().insert(calendarId='primary', body=event).execute()
print "END"
except AccessTokenRefreshError:
print ('Credentials have been revoked')
所以,當我運行我的腳本,它會打開一個窗口,詢問廣告我登錄。所以我把我的Gmail用戶名/密碼,我有以下錯誤後:
Error: redirect_uri_mismatch
The redirect URI in the request: urn:ietf:wg:oauth:2.0:oob did not match a registered redirect URI
代碼的驗證部分看起來是正確的。你執行什麼錯誤? –
@ jay-lee,你好傑伊,我已經更新了我的問題。希望它是有道理的 – Djanux