【问题标题】:Using Google Calendar API with an API-key Python使用带有 API 密钥 Python 的 Google Calendar API
【发布时间】:2015-10-04 21:57:47
【问题描述】:

我正在尝试在不使用 OAuth 的情况下将谷歌日历集成到我的网络应用程序中。由于我使用的所有日历都是公开的,因此我尝试改用 API 密钥,以避免我的用户被重定向。

我目前正在使用日历事件示例并尝试使其与 API 密钥一起使用。代码如下:

import httplib2
import os

from apiclient import discovery


import datetime



SCOPES = 'https://www.googleapis.com/auth/calendar'
api_key = '************'
APPLICATION_NAME = 'Google Calendar API Quickstart'


def main():

    service = discovery.build('calendar', 'v3', developerKey=api_key)

    event = {
  'summary': 'Google I/O 2015',
  'location': '800 Howard St., San Francisco, CA 94103',
  'description': 'A chance to hear more about Google\'s developer products.',
  'start': {
    'dateTime': '2015-05-28T09:00:00-07:00',
    'timeZone': 'America/Los_Angeles',
  },
  'end': {
    'dateTime': '2015-05-28T17:00:00-07:00',
    'timeZone': 'America/Los_Angeles',
  },
  'recurrence': [
    'RRULE:FREQ=DAILY;COUNT=2'
  ],
  'attendees': [
    {'email': '******@*****.com'},

  ],
  'reminders': {
    'useDefault': False,
    'overrides': [
      {'method': 'email', 'minutes': 24 * 60},
      {'method': 'popup', 'minutes': 10},
    ],
  },
}

    event = service.events().insert(calendarId='primary', body=event).execute()
#print 'Event created: %s' % (event.get('htmlLink'))


if __name__ == '__main__':
    main()

运行时它给我以下错误:googleapiclient.errors.HttpError: https://www.googleapis.com/calendar/v3/calendars/primary/events?alt=json&key=******* ** 返回“需要登录”>

任何帮助将不胜感激

【问题讨论】:

标签: python google-calendar-api api-key


【解决方案1】:

您只能使用 API 密钥来读取公共日历。我从未插入或更新工作。

您应该使用的是一个服务帐户,它就像一个具有自己日历帐户的虚拟预先批准的用户。您还可以与它共享日历。然后它将有权读取和写入这些日历,而无需提升您的用户的访问权限。

我不是 python 开发者,所以对代码帮助不大,但在 Google 的文档中有很多例子

【讨论】:

    【解决方案2】:

    我正在使用 Python 3 仅通过使用 API 开发人员密钥来获取公共日历上即将发生的 10 个事件 - 没有 OAuth 2。

    没有from apiclient.discovery import build也不起作用。

    这对我有用(仅在控制台中测试):

    from apiclient import discovery
    import datetime
    from apiclient.discovery import build
    
    
    dev_Key = "XXXX"
    cal_ID = "publicMail@gmail.com"
    now = datetime.datetime.utcnow().isoformat() + 'Z'
    
    service = build('calendar', 'v3', developerKey=dev_Key)
    
    
    eventsResult = service.events().list(calendarId=cal_ID, timeMin=now, maxResults=10, singleEvents=True, orderBy='startTime').execute()
    events = eventsResult.get('items', [])
    
        for event in events:
            start = event['start'].get('dateTime', event['start'].get('date'))
            print(start, event['summary'])
    

    【讨论】:

      【解决方案3】:

      抱歉,您必须使用 OAuth 2

      “您的应用程序必须使用 OAuth 2.0 来授权请求​​。不支持其他授权协议。”

      【讨论】:

      • 没关系,他会处理的。
      猜你喜欢
      • 1970-01-01
      • 2020-10-13
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-22
      • 1970-01-01
      • 2021-08-01
      相关资源
      最近更新 更多