Google API OAuth2:处理无效令牌

问题描述:

我在使用OAuth2时遇到了棘手的情况。Google API OAuth2:处理无效令牌

  1. 通过向用户询问认证开始。他授予访问权限,将凭证存储在商店中(DB,GAE Datastore等)。

  2. 转到您的谷歌的个人资料中的授权访问和撤销 应用

  3. 返回到应用程序,启动导致API调用(与驱动器API测试 )

  4. 行动应用程序正在从商店中检索凭证。测试证书有效期 (NOT NULL和无效的属性为False)

  5. 调用API

  6. 检索401,未经授权的例外。

在有效调用API之前,如何检测证书无效? 也许这是与凭据工作的方式?

感谢您的帮助。

您存储什么凭证?访问令牌?刷新令牌?

考虑使用tokeninfo端点,https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=

+0

我存储执行OAuth步骤2时获得的凭证对象。根据文档(https://developers.google.com/api-client-library/python/指南/ aaa_oauth#step2_exchange)它包含两个。 – 2013-05-28 02:18:28

+0

您可以调用tokeninfo来获取您的访问令牌的有效性,但是如果它已过期并且您可以使用刷新令牌检索新的令牌,则无法预测。 – 2013-05-29 08:27:50

使用前的access_token,调用[tokeninfo]在GoogleAPI第一(总,如果它是一个新的甚至的access_token)。我浪费了几个小时来解决这个问题。 我对Windows应用程序的工作流程:

  1. 的oauth2 - > *的access_token(* - 未验证)
  2. GoogleAPI.tokeninfo与[ACCESS_TOKEN *] - > “确定” 或 “无效”
  3. 如果“确定“ - 使用请求的权限