如何持久访问用户的Google帐户?

时间:2010-11-28 09:35:45

标签: php oauth openid google-api google-openid

我的应用从用户的Google日历中提取信息。 用户已经必须登录我的应用程序,因此他们发现每个会话至少一次(目前使用OAuth)必须“授予访问权限”到他们的谷歌帐户是令人讨厌的。

有没有办法获得永久(或接近它)的补助金?

我甚至愿意使用openID作为我的主要身份验证。那会有帮助吗?

我相信GData API提供了一个ClientLogin协议,它要求我存储用户的登录信息,我对此并不满意,尽管如果归结为它,我认为它比替代方案更好。

3 个答案:

答案 0 :(得分:3)

除非用户/应用程序自己撤销它们,否则生成的oAuth令牌不会过期。当用户在您的应用上注册时,只需抓取访问令牌并访问秘密令牌一次。将其存储在本地,并在需要时使用它来查询GDATA Api。

每次用户再次登录时,您都不需要请求访问令牌。

答案 1 :(得分:2)

由于您使用的是OAuth,我了解您的应用程序是一个Web应用程序?好吧,OAuth是你遇到问题的原因,这不是一个问题,而是API的一个特性。请参阅,OAuth连接已进行数字签名,因此每次用户尝试登录时,都会将其重定向到OAuthAuthorizeToken页面。

要解决您的问题,请使用AuthSub而不是OAuth。它不太安全但更方便。此外,它允许您的应用程序只是接收一个令牌,说明用户已经过Goodle验证,因此您不需要以这种方式存储任何有关您用户的信息。

希望这有帮助!

答案 2 :(得分:1)

有一个Oauth/OpenID hybrid solution(请参阅source) - 基本上您要求某些范围访问权限,获取基本用户数据和请求令牌作为回报,然后您将其换成身份验证令牌并保存以备将来使用。