我有一个Python应用程序,可以访问Youtube-Data-API v3。
当程序运行一个小时后,它抛出一个错误,提示访问令牌已经过期。
我如何才能将令牌持续更长时间?
现在有办法延长访问Youtube-Data-API v3的时间。access token
. 它们在一个小时后就会失效。使用令牌的唯一方法是使用以下方法获得一个新的令牌 refresh_token
由api提供。
首先你通过设置 access_type
到 offine
在验证用户身份时。
{
'response_type': 'code',
'client_id': 'client_id',
'redirect_uri': '...',
'access_type':'offline',
'scope': 'https://www.googleapis.com/auth/youtube.readonly',
}
你会得到 refresh_token
, access_token
, id_token
与...一起 expiry
和其他一些字段,您可以保存在您的数据库中,以后需要时再取。
在使用 access_token
你检查它是否有效
creds = google.oauth2.credentials.Credentials(access_token,refresh_token=refresh_token,id_token=id_token,token_uri=token_uri,client_id=client_id,client_secret=client_secret,scopes=scopes,expiry=expirytime)
if creds.valid == False:
// Refresh to get the new token
req =google.auth.transport.requests.Request()
creds.refresh(req)
// Now Save new Credentials from "creds" so that you can use later.
经核实后 access_token
你现在可以查询 youtube data api
请求
youtube = googleapiclient.discovery.build(
"youtube", "v3",credentials=creds)
req = youtube.videos().getRating(id="xxxxxxxxx")
resp =req.execute()
当你创建O-Auth2凭证时,你需要选择 "Web应用程序",我想这就是你要创建的。(一个网站,对吗?)。
桌面应用程序 "选项是为你想创建一个桌面应用程序,而不是网站。
桌面应用程序和Web应用程序处理重定向URIS的方式不同,这就是导致你的问题的原因。