当前位置: 首页 > 知识库问答 >
问题:

通过API进行谷歌日历事件,无需GCP重新验证

诸超
2023-03-14

我正在尝试从特定日历中读取我的Google日历事件,而无需在X小时/天之后重新验证仪表板。可能吗?

我添加了谷歌日历API到我的谷歌云平台项目,创建了桌面客户端(客户端和秘密),并可以通过python api访问我的日期:

SCOPES = [
    'https://www.googleapis.com/auth/calendar.readonly', "openid",
    "https://www.googleapis.com/auth/userinfo.email",
    "https://www.googleapis.com/auth/userinfo.profile"
    ]


client_config = {
    'installed': {
        'client_id': '123456.apps.googleusercontent.com',
        'project_id': 'test-dashboard',
        'auth_uri': 'https://accounts.google.com/o/oauth2/auth',
        'token_uri': 'https://oauth2.googleapis.com/token',
        'auth_provider_x509_cert_url': 'https://www.googleapis.com/oauth2/v1/certs',
        'client_secret': 'secret',
        'redirect_uris': ['urn:ietf:wg:oauth:2.0:oob', 'http://localhost']
        }
    }

flow = InstalledAppFlow.from_client_config(client_config, SCOPES)
credentials = flow.run_local_server()
service =  build('calendar', 'v3', credentials = credentials)

page_token = None
cal = {}
while True:
  calendar_list = service.calendarList().list(pageToken=page_token).execute()
  for calendar_list_entry in calendar_list['items']:
    cal[calendar_list_entry['summary']] = calendar_list_entry
  page_token = calendar_list.get('nextPageToken')
  if not page_token:
    break

但问题是,流。运行_local_server()每次询问我的谷歌账户,这对于全天候运行的仪表板是不可能的。

亲切的问候

编辑:我在gcp使用标准的gmail帐号。我用一个服务帐户尝试过,但是如果我使用这个方法,结果是空的,而不是gmail帐户中的事件。是否可以通过服务帐户从我的个人帐户获取日历事件?

如果我使用域范围的委托,我可以从域请求日历事件,但这并不能帮助我从个人帐户接收事件,是吗?

共有1个答案

傅阳炎
2023-03-14

我让它工作了:我邀请服务用户到其中一个私人日历,然后插入它。现在我可以用我的服务帐户从私人帐户中读取事件。

 类似资料:
  • 接下来,我生成了自己的OAuth2客户机ID并使用它。这种方法很简单,直到我开始收到来自Google的“匿名使用过期”错误,一段时间后我意识到这是因为密钥没有启用只读日历范围。 我的下一个想法是公开日历,并使用静态API密钥,但日历是从一个名为Peak Pro的预订服务中同步的,该服务用参加活动的客户的姓名、电子邮件和电话号码填充日历描述。我不能公开揭露那些。 接下来,我被吸引到了CalDAV A

  • 我试图向google calendar api发出POST请求,但我不知道如何对其进行身份验证。 我采取了以下步骤尝试并使用服务帐户执行此操作: > <代码>{“error”:{“errors”:[{“domain”:“global”,“reason”:“authError”,“message”:“Invalid Credentials”,“locationType”:“header”,“loca

  • 我能够使用服务帐户和谷歌日历API在谷歌日历中创建一个事件,其中项目和服务帐户是在谷歌工作区管理员帐户中创建的,在同一个帐户中,我启用了域范围的委派属性。我还没有创建单独的日历,也没有授予访问服务帐户的权限。如果我在CreateDelegate()中使用我的工作区google帐户,则此事件将在'abc@myworkspace.com对于我添加的每个与会者,“日历”和“创建人”属性也是相同的。 所以

  • 我想知道我是否需要Google java客户端库才能从GAE访问我的Google日历。默认情况下,它们是Google App Engine SDK的一部分吗? 此外,我找不到一个很好的示例或教程来展示如何从Google Cloud Platform应用程序创建、读取、更新和删除Google日历事件。 非常感谢,如果您可以提供相同的代码示例或链接到适当的工作教程。

  • 我在我的Angular 9 Web应用程序中使用谷歌日历API,并试图在我的谷歌办公套件域内的谷歌日历上创建事件 在G Suite管理控制台中,我为服务帐户授予了作用域的权限https://www.googleapis.com/auth/calendar和https://www.googleapis.com/auth/calendar.events 我在我的帐户下创建了日历本身,并添加了具有“更改

  • 我想使用Google CAL API v3来观看多个日历,从而将这些日历中的所有事件更新到主日历,因此我需要使用WATCH/PUSH通知,以便每当有新事件在这些cal中,这些事件将自动在我的主日历中推送/创建。 但是,我面临以下问题:在API资源管理器下。大多数服务返回200 OK,除了Watch请求不工作。 服务 我收到了以下请求和响应 请求 回应 然后我按照下面的谷歌文档https://dev