更新时间:2023-12-04 15:47:17
我认为您的问题是您在致电 日历 API 但我在自己的实现中使用了一些不同之处
I think you're problem is that your not authorising your credentials before making the call to the Calendar API but there is a couple of differences that you have that I use in my own implementation
使用以下导入语句
Use the following import statements
from oauth2client.service_account import ServiceAccountCredentials
from apiclient import discovery
授权凭据并在构建服务时将其作为 http
参数传递
Authorise the credentials and pass it as a http
argument when building the service
尝试修改您的代码:
from apiclient import discovery
from oauth2client.service_account import ServiceAccountCredentials
import httplib2
SCOPES = ['https://www.googleapis.com/auth/calendar']
SERVICE_ACCOUNT_FILE = 'GOOGLE_SECRET.json'
credentials = ServiceAccountCredentials.from_json_keyfile_name(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
# Use the create_delegated() method and authorize the delegated credentials
delegated_credentials = credentials.create_delegated('address@example.com')
delegated_http = delegated_credentials.authorize(httplib2.Http())
google_calendar = discovery.build('calendar', 'v3', http=delegated_http)
events = google_calendar.events().list(
calendarId='address@example.com',
maxResults=10
).execute()
我还建议在您的 API 调用中设置 calendarId='primary'
,以便您始终返回当前已为其委派凭据的用户的主日历.
I would also suggest setting calendarId='primary'
in your API call so that you always return the primary calendar of the user who you currently have delegated credentials for.
有关使用 ServiceAccountCredentials
进行身份验证的更多信息,请参阅以下链接:http://oauth2client.readthedocs.io/en/latest/source/oauth2client.service_account.html
For more information on authenticating using ServiceAccountCredentials
see the following link: http://oauth2client.readthedocs.io/en/latest/source/oauth2client.service_account.html