Google Calendar API-连续同步

问题描述 投票:0回答:1

我知道如何与Google Calendar API进行同步。我们正在尝试构建一个无需询问同意屏幕即可连续同步Google日历的系统。我确实搜索了很多,但似乎他们发送了nextsynctoken以获得完整的事件列表。但是如果我想在2周后重新开始同步。我该怎么做?无需向用户询问身份验证窗口或同意屏幕?

请让我知道是否可能。

先谢谢您萨拉瓦纳

google-calendar-api
1个回答
0
投票

您对Google Calendar API的所有请求都必须由经过身份验证的用户授权。

但是由于您遇到的问题对我来说似乎是令牌过期,为什么不尝试刷新您正在使用的访问令牌

根据Using OAuth 2.0 to Access Google APIs文档

访问令牌的寿命有限。如果您的应用程序需要在单个访问令牌的生存期之外访问Google API,则可以获取刷新令牌。刷新令牌使您的应用程序可以获得新的访问令牌。

nextSyncToken是服务器和客户端之间交换的一条数据,用于同步过程。

您可以继续使用nextSyncToken,但必须使用刷新令牌才能使您每次都不使用同意屏幕。

这里是Using OAuth 2.0 for Web Server Applications中的示例代码,用于使用Python交换刷新和访问令牌的授权代码:

state = flask.session['state']
flow = google_auth_oauthlib.flow.Flow.from_client_secrets_file(
    'client_secret.json',
    scopes=['https://www.googleapis.com/auth/youtube.force-ssl'],
    state=state)
flow.redirect_uri = flask.url_for('oauth2callback', _external=True)

authorization_response = flask.request.url
flow.fetch_token(authorization_response=authorization_response)

# Store the credentials in the session.
# ACTION ITEM for developers:
#     Store user's access and refresh tokens in your data store if
#     incorporating this code into your real app.
credentials = flow.credentials
flask.session['credentials'] = {
    'token': credentials.token,
    'refresh_token': credentials.refresh_token,
    'token_uri': credentials.token_uri,
    'client_id': credentials.client_id,
    'client_secret': credentials.client_secret,
    'scopes': credentials.scopes}

我建议您检查以下链接,因为它们可以提供有关您的问题的更多信息:

  1. Using OAuth 2.0 to Access Google APIs

  2. Authorizing Requests to the Google Calendar API

  3. Synchronize Resources Efficiently

对于用于刷新令牌的其他编程语言,您可以检查以下内容:

  1. Using OAuth 2.0 for Web Server Applications
© www.soinside.com 2019 - 2024. All rights reserved.