如何使用google api客户端库保持用户长期认证

时间:2014-01-06 17:45:46

标签: ruby authentication google-api

背景

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

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

问题

一旦我完成了所有工作,这个系统运行正常,问题是它只能在用户必须再次访问网站以刷新其访问令牌之前工作一天左右。

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

刷新令牌?

我听说有一种方法可以将用户的刷新令牌存储在数据库中,并以某种方式使用它来刷新其访问令牌。如果这听起来像一个好方法,那么有人能指出我的方向来让这个工作吗?

我一直在使用google api client library for ruby

非常感谢!

1 个答案:

答案 0 :(得分: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)以获取新的访问令牌。