Oauth 2.0 如何永久使用oauth2令牌?

Oauth 2.0 如何永久使用oauth2令牌?,oauth-2.0,google-api,google-calendar-api,google-oauth,Oauth 2.0,Google Api,Google Calendar Api,Google Oauth,我想在我的网站上永久使用oauth2令牌 使用google API,当用户授予管理其google日历的权限时,我从google API获取访问令牌。我想将它保存在数据库中,并在最后一段时间内使用它 但它正在变得无效。我尝试使用oauth2刷新令牌API刷新令牌。但得到的错误如下 数组([error]=>无效的\u授权[error\u description]=>令牌已过期或吊销。) 我不希望用户每次进入网站时都给予许可 我也想管理员需要访问用户的日历使用此令牌或任何其他方式,如果它是 如何实现这

我想在我的网站上永久使用oauth2令牌

使用google API,当用户授予管理其google日历的权限时,我从google API获取访问令牌。我想将它保存在数据库中,并在最后一段时间内使用它

但它正在变得无效。我尝试使用oauth2刷新令牌API刷新令牌。但得到的错误如下

数组([error]=>无效的\u授权[error\u description]=>令牌已过期或吊销。)

我不希望用户每次进入网站时都给予许可

我也想管理员需要访问用户的日历使用此令牌或任何其他方式,如果它是


如何实现这一点?

底线是您无法获得永久令牌-但您可以减少用户重新提供凭据的需要

解决方案取决于您使用的授权类型(这在很大程度上取决于您的应用程序是在服务器上运行还是在最终用户的机器上运行)。你提到了一个网站,所以希望你使用一个赠款类型,它也会返回一个刷新代码

如果您的应用程序在服务器上运行,并且您通过
授权代码授权获得令牌
,那么您在获得访问令牌时也应该能够获得刷新令牌。您可以使用该刷新令牌在后台通道上请求新的刷新/访问令牌,而无需用户或其凭据

实际上,如果用户不撤销访问权限,那么您应该可以长期访问用户的google资源


如果使用其他授权类型,如
隐式授权
,则无法获取刷新令牌。您需要定期获取新的访问令牌。如果您的用户在您的应用程序运行的设备上仍然登录到google,则在您请求新的访问令牌时,不应要求他们提供google凭据,这样您就不会不断纠缠他们获取凭据。

我使用的是刷新令牌选项,而不是尝试获取永久令牌

当我使用标记调用google日历时,我添加了如下参数“access\u type=offline”

$login\u url=''。urlencode(“”)。'&重定向_uri='。客户端\u重定向\u URL。“&响应类型=代码&客户端id='。客户号。”&访问类型=离线'

在用户允许后,我将获取访问\u令牌,并将刷新\u令牌作为响应。我正在把它们保存在数据库中。然后,每当管理员访问用户的日历时,都会使用刷新令牌(通过刷新令牌api调用存储在数据库中)获取新的访问令牌,直到用户使用“我的站点”中的“取消同步”选项

一旦用户取消日历同步,我将更新数据库。
问题解决了。

谢谢您的回答。我已经得到了我需要的答案。你有没有用我需要的swift实现谷歌日历help@DilipTiwari很抱歉我没有用斯威夫特做过。顺便说一句,我可以知道你面临的问题是什么吗?我在swift中成功实现了谷歌日历,但我想通过我的应用程序创建活动