如何使用 google api 客户端库长期保持用户身份验证

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

背景

我正在开发一个将在不包含浏览器的设备上运行的应用程序,但我想通过 google api 获取用户的 google 任务。

由于缺少浏览器,他们无法在设备上进行身份验证,因此我将其设置为让他们访问网站并在那里进行身份验证,然后设备向网站发出 http 请求以获取数据需要。

问题

一旦一切正常,该系统就可以正常工作,问题是它只能工作一天左右,然后用户必须再次访问该网站以刷新其访问令牌。

如果用户可以在很长一段时间内甚至永远进行身份验证,那就太好了(不确定这是否可能或安全)。我可以得到一些关于人们认为实现这种长期认证的最佳方法的建议吗?

刷新令牌?

我听说有一种方法可以将用户的刷新令牌存储在数据库中,并以某种方式使用它来刷新他们的访问令牌。如果这听起来像是一个好方法,任何人都可以为我指出一个示例以使其发挥作用吗?

我一直在使用 google api 客户端库用于 ruby

非常感谢!

ruby authentication google-api
2个回答
0
投票

有了刷新令牌,您就走在正确的轨道上。我对 Ruby API 帮不了什么忙,老实说,我只是直接调用 REST api,但是这个文档应该可以帮助您了解需要进行的实际调用。

https://developers.google.com/accounts/docs/OAuth2WebServer#offline

请注意,对于许多示例,您需要删除换行符才能正常工作。

基本上就像您所说的那样,您需要使用 access-type=offline 参数将用户发送到 https://accounts.google.com/o/oauth2/auth 以获得他们的同意。这会返回一个授权代码,您可以将其发送到 /o/oauth2/token。返回时带有访问令牌和刷新令牌。您可以立即使用访问令牌,并存储永不过期的刷新令牌。当访问令牌过期时,您将刷新令牌发送到 /o/oauth2/token (请注意,grant_type 更改为refresh_token)以获取新的访问令牌。


0
投票

您可以立即使用访问令牌,并存储刷新令牌,该令牌永不过期。当访问令牌过期时,您将刷新令牌发送到 /o/oauth2/token (请注意,grant_type 更改为refresh_token)以获取新的访问令牌。如果过期的 kt 应该自动重新生成,则访问令牌不应过期我已经有了刷新令牌是否可以使代码本身中的访问令牌不过期(如果可能的话)在 python django 中给出它

© www.soinside.com 2019 - 2024. All rights reserved.