Oauth 2.0 如何刷新1小时后过期的谷歌服务帐户?

Oauth 2.0 如何刷新1小时后过期的谷歌服务帐户?,oauth-2.0,google-drive-api,google-oauth,Oauth 2.0,Google Drive Api,Google Oauth,我正在使用Google Drive API(C#)和中提到的服务帐户 我可以使用DriveService对象,但在1小时后,它出现了异常错误:“远程服务器返回了一个错误:(401)未经授权。” 我知道,通过将“访问类型”设置为“脱机”,我们可以解决此问题,但我无法为DriveService对象设置此属性。 有人知道如何刷新这个Google Drive服务对象吗 提前感谢当您设置脱机访问模式时,当用户首次登录时,您的应用程序将获得一个刷新令牌 访问类型:: 指示应用程序在运行时是否需要访问Goo

我正在使用Google Drive API(C#)和中提到的服务帐户

我可以使用DriveService对象,但在1小时后,它出现了异常错误:“远程服务器返回了一个错误:(401)未经授权。”

我知道,通过将“访问类型”设置为“脱机”,我们可以解决此问题,但我无法为DriveService对象设置此属性。
有人知道如何刷新这个Google Drive服务对象吗


提前感谢

当您设置脱机访问模式时,当用户首次登录时,您的应用程序将获得一个刷新令牌

访问类型:: 指示应用程序在运行时是否需要访问Google API 用户不在浏览器中。此参数默认为联机。 如果您的应用程序需要在用户访问时刷新访问令牌 浏览器中不存在,请使用脱机。这将导致您的 应用程序第一次访问应用程序时获取刷新令牌 为用户交换授权代码

一旦当前访问令牌过期,您将使用此刷新令牌获取新的访问令牌。基本上,您的应用程序将使用刷新令牌和您的客户端凭据点击令牌交换端点(POST to),然后使用google向您发送(刷新令牌+访问令牌)对。
有关进一步澄清,请参阅


EDIT-
我查看了服务帐户文档,发现了一个示例C#应用程序,它也可以获取和使用刷新令牌。请看。
我希望这一个有帮助。

当您设置脱机访问模式时,当用户首次登录时,您的应用程序将获得一个刷新令牌

访问类型:: 指示应用程序在运行时是否需要访问Google API 用户不在浏览器中。此参数默认为联机。 如果您的应用程序需要在用户访问时刷新访问令牌 浏览器中不存在,请使用脱机。这将导致您的 应用程序第一次访问应用程序时获取刷新令牌 为用户交换授权代码

一旦当前访问令牌过期,您将使用此刷新令牌获取新的访问令牌。基本上,您的应用程序将使用刷新令牌和您的客户端凭据点击令牌交换端点(POST to),然后使用google向您发送(刷新令牌+访问令牌)对。
有关进一步澄清,请参阅


EDIT-
我查看了服务帐户文档,发现了一个示例C#应用程序,它也可以获取和使用刷新令牌。请看。
我希望这一点有帮助。

服务帐户附带一个私钥,这是它们作为用户驱动的同意流返回的刷新令牌的道德等价物/超集

当用户同意脱机访问(通过web服务器或类似的OAuth流)时,将返回一个刷新令牌,该令牌可以在任何时候与客户机机密一起交换访问令牌

以同样的方式,服务帐户私钥可用于签署断言,该断言也可交换为访问令牌-这对于没有用户接受同意屏幕的情况很有用,或者您代表组织中的其他用户执行工作的情况也很有用

一旦您获得访问令牌,它将以相同的方式进行处理,并且预计将在1小时后过期,此时需要请求一个新的访问令牌,这对于服务帐户意味着创建并签署一个新的断言


通常注意到访问令牌已过期,请求一个新的令牌由Google客户端库为您处理—尽管我不熟悉C#版本。如果您可以共享创建DriveService对象的代码,这将很有帮助。

服务帐户附带一个私钥,这是它们作为用户驱动的同意流返回的刷新令牌的道德等价物/超集

当用户同意脱机访问(通过web服务器或类似的OAuth流)时,将返回一个刷新令牌,该令牌可以在任何时候与客户机机密一起交换访问令牌

以同样的方式,服务帐户私钥可用于签署断言,该断言也可交换为访问令牌-这对于没有用户接受同意屏幕的情况很有用,或者您代表组织中的其他用户执行工作的情况也很有用

一旦您获得访问令牌,它将以相同的方式进行处理,并且预计将在1小时后过期,此时需要请求一个新的访问令牌,这对于服务帐户意味着创建并签署一个新的断言


通常注意到访问令牌已过期,请求一个新的令牌由Google客户端库为您处理—尽管我不熟悉C#版本。如果您可以共享创建DriveService对象的代码,那将很有帮助。

谢谢您的帮助。

但是我没有使用Google OAuth2.0身份验证。.我正在为域用户使用Google服务帐户身份验证。.我发现了类似的东西。。。。。provider.RefreshToken(身份验证状态);。。。。。。。。。。。。。这将刷新DriveService对象…但在服务帐户身份验证中是否有任何自动刷新功能…如access\u type=offline?添加了一些我可以找到的更多信息。我希望这对你有帮助。未找到页面:\n谢谢你的帮助。但是我没有使用Google OAuth2.0身份验证。我正在使用Google服务帐户身份验证,用于域用户。我发现了类似的东西。。。。。provider.RefreshToken(身份验证状态);。。。。。。。。。。。。。这将刷新DriveService对象…但在服务帐户身份验证中是否有任何自动刷新功能…如access\u type=offline?添加了一些我可以找到的更多信息。我希望这对您有所帮助。未找到页面:\Thank aeijdenberg…我正在使用pl代码