在Python桌面应用中坚持Youtube数据API访问令牌。

问题描述 投票:0回答:3

我有一个Python应用程序,可以访问Youtube-Data-API v3。

当程序运行一个小时后,它抛出一个错误,提示访问令牌已经过期。

我如何才能将令牌持续更长时间?

python youtube-data-api refresh-token
3个回答
0
投票

现在有办法延长访问Youtube-Data-API v3的时间。access token. 它们在一个小时后就会失效。使用令牌的唯一方法是使用以下方法获得一个新的令牌 refresh_token 由api提供。

首先你通过设置 access_typeoffine 在验证用户身份时。

{
    '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()

0
投票

当你创建O-Auth2凭证时,你需要选择 "Web应用程序",我想这就是你要创建的。(一个网站,对吗?)。

桌面应用程序 "选项是为你想创建一个桌面应用程序,而不是网站。

桌面应用程序和Web应用程序处理重定向URIS的方式不同,这就是导致你的问题的原因。

© www.soinside.com 2019 - 2024. All rights reserved.