我知道如何与Google Calendar API进行同步。我们正在尝试构建一个无需询问同意屏幕即可连续同步Google日历的系统。我确实搜索了很多,但似乎他们发送了nextsynctoken以获得完整的事件列表。但是如果我想在2周后重新开始同步。我该怎么做?无需向用户询问身份验证窗口或同意屏幕?
请让我知道是否可能。
先谢谢您萨拉瓦纳
您对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}
我建议您检查以下链接,因为它们可以提供有关您的问题的更多信息:
对于用于刷新令牌的其他编程语言,您可以检查以下内容: