我为我的雇主对组织的 YouTube 频道进行分析。我已经使用 YouTube DATA API 成功检索数据,但是我无法从 YouTube Analytics API (a'la reports.query) 获取指标。
以下是详细信息... 身份验证:SAML(组织 GSuite 帐户) 授权:OAuth2 我的组织帐户是 YouTube 频道的“所有者”(尽管不是主要所有者)。Google Cloud Platform 项目:内部(组织)
我尝试了各种 SCOPE 组合。
当我指定 ids="channel==<channel_id>" 时,我收到 403(禁止)响应。
当我指定 ids="channel==MINE" 时,我得到一个带有标题的 200 状态,但取决于维度和指标选择,要么没有记录,要么每个指标都有一个零记录。我的怀疑是“channel==MINE”正在寻找“我的”频道而不是品牌帐户的频道,因为否则它不知道哪个品牌频道。
我的问题是,如何确保我的组织帐户可以使用 YouTube Analytics API 和 YouTube Reporting API 获取数据?是否有分配这些访问权限的管理站点?如果是这样,它在哪里?
以下代码本质上是来自 API Explorer 的示例代码...
import os
import google_auth_oauthlib.flow
import googleapiclient.discovery
import googleapiclient.errors
scopes = ["https://www.googleapis.com/auth/youtube.readonly"]
def main():
# Disable OAuthlib's HTTPS verification when running locally.
# *DO NOT* leave this option enabled in production.
os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"
api_service_name = "youtubeAnalytics"
api_version = "v2"
client_secrets_file = "client_secret.json"
# Get credentials and create an API client
flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(
client_secrets_file, scopes)
# credentials = flow.run_console()
credentials = flow.run_local_server()
youtube_analytics = googleapiclient.discovery.build(
api_service_name, api_version, credentials=credentials)
request = youtube_analytics.reports().query(
ids="channel==MINE",
startDate="2020-09-01",
endDate="2020-09-30",
dimensions="day",
metrics="views",
)
response = request.execute()
print(response)
if __name__ == "__main__":
main()
如图所示的代码,产生...
{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'day', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': []}
将 ids 设置为“channel==UC6L0DBYWqAkmwfawTUMaR3g”,返回以下内容...
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://youtubeanalytics.googleapis.com/v2/reports?ids=channel%3D%3DUC6L0DBYWqAkmwfawTUMaR3g&startDate=2020-09-01&endDate=2020-09-30&dimensions=day&metrics=views&alt=json returned "Forbidden">