gpt4 book ai didi

python - Youtube Analytics API 返回 403 forbidden 即使 token 有效

转载 作者:太空狗 更新时间:2023-10-29 21:56:04 24 4
gpt4 key购买 nike

我在访问随机 YouTube channel 的 YouTube Analytics API 时遇到问题。

在以下范围成功授权后:

我正在数据库中保存tokenrefresh token。一段时间内一切正常。一段时间后(例如三个月),当我的应用发出请求时,Google 返回 403:

{
"error": {
"errors": [
{
"domain": "global",
"reason": "forbidden",
"message": "Forbidden"
}
],
"code": 403,
"message": "Forbidden"
}
}

但仅适用于 Youtube Analytics API,Youtube 数据 API 中的其他端点可以使用此 token 正常工作。随机帐户( channel )会发生这种情况。该 channel 的所有者没有撤销对我的应用程序的访问权限,没有更改帐户密码等。

这个问题影响了我应用程序中大约 40% 的所有 channel (Youtube Analytics API 停止工作的时间不同,从获得 OAuth2 token 后的 1 到 6 个月不等)。然后我必须定期向他们发送一个新的授权 url。

问题出在哪里?

这就是我生成 auth url 并发出请求的方式:

  • 授权网址:

    flow = client.flow_from_clientsecrets(
    secret_file_path,
    scope=["https://www.googleapis.com/auth/youtube.readonly",
    "https://www.googleapis.com/auth/yt-analytics.readonly"],
    redirect_uri=redirect_url,
    prompt="consent"
    )
    flow.params["access_type"] = "offline"
    url = flow.step1_get_authorize_url(state=state)
  • 统计请求:

    auth = client.OAuth2Credentials.from_json(credentials_from_db)
    http_auth = auth.authorize(httplib2.Http())
    api = discovery.build("youtubeAnalytics", "v1", http=http_auth,
    cache_discovery=False)
    api.reports().query(
    ids="channel==%s" % channel_id,
    metrics="estimatedMinutesWatched",
    dimensions="video",
    start_date=start_date,
    end_date=end_date,
    max_results=20,
    filters="video=={}".format(",".join(video_ids))
    ).execute(http=http)

我正在使用 google-api-python-client 1.6.5

编辑

我在使用 google-api-python-client 调试对 google API 的请求时附上了屏幕截图。这是正在发生的事情:

  1. 使用 Youtube Data API 检索 channel 的基本统计数据
  2. 使用 Youtube Analytics API 检索 channel 的高级统计数据

我的观点是,刷新 token 在两种情况下都成功交换,但仅适用于 Youtube 数据 API。我特意换了两次。当我仅访问 Youtube Analytics API 并成功交换一次 token 时(不调用 Youtube Data API),结果相同。

最有趣的部分是,这段代码工作了一段时间(几周或几个月)然后就停止了:-)

API requests

最佳答案

好的,让我们从一些背景信息开始。

刷新 token 停止工作有多种原因。

  1. 如果不使用,旧的刷新 token 会在六个月后过期。
  2. 用户可以重新验证您的应用程序并获得一个新的刷新 token ,这两个刷新 token 都可以工作,您最多可以有五十个未完成的刷新 token ,然后第一个将停止工作。
  3. 用户可以撤销您的访问权限。
  4. 2015 年的 Wakey 夏令时错误。(我们不会谈论那个)

现在这一切都不是你的情况。为什么因为刷新 token 仍然有效,你只是下垂了一个范围。用户无法删除您对一个范围的访问权限并且不会使一个范围过期,这太疯狂了。

话虽这么说,但我认为这是一个错误。我已经向我认识的 Oauth 团队成员发送了一封电子邮件。

与此同时。我有一个想法?

如果您尝试使用刷新 token 请求新的访问 token ,会发生什么情况?可能是返回给您的访问 token 有问题吗?

关于python - Youtube Analytics API 返回 403 forbidden 即使 token 有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50582615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com