我使用GAE环境中AppAssertionCredentials
类提供的两条腿OAuth2流程。
...
credentials = AppAssertionCredentials(scope=API_AUTH_SCOPES)
http = credentials.authorize(httplib2.Http(memcache))
drive_service = build("drive", "v2", http=http)
...
上面的代码放在我的Python app类的开头。它现在工作正常...但我发现,对于每个http请求,我的应用都会尝试刷新OAuth2令牌。
我的问题是:可以吗?我应该关心令牌过期/验证还是OAuth2 API使用限制? Shoud我将凭证存储在存储机制中并将其重新用于下一个请求吗?
AppAssertionCredentials
class docs说
此凭据不需要流实例化,因为它代表 两条腿的流量,因此具有所有必需的信息 生成并刷新自己的访问令牌。
_refresh(self, http_request)
doc说
由于底层App Engine app_identity实现了它 自己的缓存,我们可以跳过所有的存储箍,只是为了刷新 使用
我对GAE上服务帐户OAuth流程的正确使用感到困惑。
我感谢任何有关此主题的建议。
更新
声明:" 我观察到,对于每个http请求,我的应用都会尝试刷新OAuth2令牌。"
在GAE上使用AppAssertionCredentials
时不正确!仔细观察日志我看到token refresh
只执行一次。在GAE上使用AppAssertionCredentials
时,GAE会在幕后处理OAuth2握手。