【问题标题】:Get Youtube Analytics without OAuth and just API key在没有 OAuth 和 API 密钥的情况下获取 Youtube 分析
【发布时间】:2021-09-15 20:20:30
【问题描述】:

我正在尝试使用谷歌云来获取我的 youtube 频道的统计信息,但我不想每次都完成 OAuth 并将密钥输入控制台。我有一个 API 密钥,想知道它是否可以只使用 API 密钥获取统计信息,而不必通过 OAuth 流程,因为我计划将其连接到显示器并且不想经常进行 OAuth。

这是我从 Github 复制的代码,但这又一次让 OAuth 和它有点痛苦,我希望只使用 API 密钥,这样我就不必与它交互来获取我的统计信息。

import google.oauth2.credentials
import google_auth_oauthlib.flow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from google_auth_oauthlib.flow import InstalledAppFlow

SCOPES = ['https://www.googleapis.com/auth/yt-analytics.readonly']

API_SERVICE_NAME = 'youtubeAnalytics'
API_VERSION = 'v2'
CLIENT_SECRETS_FILE = 'YTClientSecrets.json'

def get_service():
  flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRETS_FILE, SCOPES)
  credentials = flow.run_console()
  return build(API_SERVICE_NAME, API_VERSION, credentials = credentials)

def execute_api_request(client_library_function, **kwargs):
  response = client_library_function(
    **kwargs
  ).execute()

  print(response)

os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'

youtubeAnalytics = get_service()
execute_api_request(
    youtubeAnalytics.reports().query,
    ids='channel==MINE',
    startDate='2017-01-01',
    endDate='2021-12-31',
    metrics='estimatedMinutesWatched,views,likes,subscribersGained',
    dimensions='day',
    sort='day'
)

print(response.text)```

【问题讨论】:

    标签: python youtube-api google-oauth google-api-python-client youtube-analytics-api


    【解决方案1】:

    回答:不,您不能使用 API 密钥访问私人用户数据。

    如何查看方法是否需要授权。

    如果您查看jobs.reports.get 的文档,您会注意到以下内容

    所有请求私有用户数据的方法都会有一个授权部分。这会告诉您访问私有数据需要哪个授权范围。

    API 密钥仅允许您访问公共数据,例如上传到 youtube 的公共视频是公共数据,因此您无需获得授权即可访问它们,您可以使用 api 密钥。

    服务帐号

    还有另一种类型的授权称为服务帐户授权,它允许您预先授权服务帐户访问私人用户数据。

    但是,支持服务帐户身份验证的 API 存在一些限制。

    • YouTube Analytics API 不支持服务帐户流程。
    • YouTube Reporting API 仅支持拥有和管理多个 YouTube 频道的 YouTube 内容所有者的服务帐户流程。具体来说,内容所有者可以在为 onBehalfOfContentOwner 请求参数设置值的 API 请求中使用服务帐号。

    如果您不能使用服务帐户身份验证,您唯一的选择是创建一个单一用户类型系统,您授权您的脚本存储您的刷新令牌,以便您的脚本将来可以使用刷新令牌来请求新的访问令牌。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多