好吧,所以我一直在努力了解谷歌python api客户端库。这就是我所拥有的:
-
Oauth2Credentials类->提供方法refresh(),该方法允许重新发布新的access_token。在客户端中,这是唯一公开可见的重新发布新令牌的方法。此外,如果使用此类的实例授权http请求,则会隐式处理刷新此外,理想情况下不应直接创建此实例,而是通过流对象创建https://google-api-python-client.googlecode.com/hg/docs/epy/oauth2client.client.OAuth2Credentials-class.html
-
AccessTokenCredentials类->只接受access_token,并且只能用于验证http请求。不提供刷新方法。https://google-api-python-client.googlecode.com/hg/docs/epy/oauth2client.client.AccessTokenCredentials-class.html
当通常不创建Oauth2Credentials实例时,我如何使用刷新令牌来获取新的access_token?我应该在第一次生成凭据对象时存储该对象吗?如果是,怎么办?
是的,您应该以某种方式将访问令牌存储在数据库中。
当你从数据库加载它时,以下是如何在使用它之前实际刷新它:
#when you load the credentials from the DB, make sure it is
#this type of object:
credentials = google.oauth2.credentials.Credentials()
#here is the object (with type) that the credential object needs to
#do the refreshing
request = google.auth.transport.requests.Request()
#and now we actually refresh the token.
credentials.refresh(request)
#and now the credentials object should be usable.
如果你想了解更多细节,我已经在这里从头到尾使用谷歌库对整个oauth2过程进行了总结:
https://stackoverflow.com/a/48242762/1626536