如何从 YouTube Analytics api 的 json 文件加载客户端凭据?

2023-12-10

我想从朋友的 YouTube 频道检索获利数据。我使用下面的 python 代码从他那里获取身份验证凭据,然后将其保存到 JSON 文件中。在此过程中,他必须单击链接并将密钥发送给我。我想通过保存凭据数据来避免这种情况。我想我已经做到了,但是我现在如何加载它?

import json
import os
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', 'https://www.googleapis.com/auth/yt-analytics-monetary.readonly']
API_SERVICE_NAME = 'youtubeAnalytics'
API_VERSION = 'v2'
CLIENT_SECRETS_FILE = 'client_secret_dota2rapier_youtube_analytics_api.json'
CLIENT_CREDENTIALS_FILE = 'credentials.json'
root = 'C:\\test\\'
os.chdir(root)


def get_service():
  flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRETS_FILE, SCOPES)
  credentials = flow.run_console()

  #SAVING CREDENTIALS DATA
  creds_data = {
      'token': credentials.token,
      'refresh_token': credentials.refresh_token,
      'token_uri': credentials.token_uri,
      'client_id': credentials.client_id,
      'client_secret': credentials.client_secret,
      'scopes': credentials.scopes
  }
  save = True
  if save:
      del creds_data['token']
      with open('credentials.json', 'w') as outfile:
          json.dump(creds_data, outfile)

  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)

if __name__ == '__main__':
  # Disable OAuthlib's HTTPs verification when running locally.
  # *DO NOT* leave this option enabled when running in production.
  os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'
  youtubeAnalytics = get_service()
  execute_api_request(
      youtubeAnalytics.reports().query,
      ids='channel==UC0NM4tKT5s9szqnK3jp6dEw',
      startDate='2018-12-20',
      endDate='2018-12-30',
      metrics='views,likes,estimatedRevenue',
      dimensions='day',
      sort='day'
  )

我自己解决了。我只需要使用以下代码创建凭据对象:

credentials = google.oauth2.credentials.Credentials.from_authorized_user_file(CLIENT_CREDENTIALS_FILE)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 YouTube Analytics api 的 json 文件加载客户端凭据? 的相关文章

随机推荐

  • 在 PyQt GUI 中嵌入和更新 matplotlib 图形时出现内存泄漏

    我正在尝试将每秒更新一次的 matplotlib 图嵌入到 PyQt GUI 主窗口中 在我的程序中 我每秒调用一个更新函数threading Timer通过timer函数如下所示 我有一个问题 我的程序每秒都在变大 大约每 4 秒 1k
  • 子查询出现问题,字段不存在,但优点是给我结果

    我有一个关于优势子查询的问题 当我分析几个 SQL 查询时 我偶然发现了一个奇怪的情况 当我执行以下 SQL 时 得到以下结果 select from orderlyn where OLWArtnr in select OlwArtnr f
  • 在 C# 中执行批处理文件

    我正在尝试用 C 执行批处理文件 但没有成功 我在互联网上找到了多个这样做的例子 但它对我不起作用 public void ExecuteCommand string command int ExitCode ProcessStartInf
  • jQuery 覆盖 $.post 函数

    首先 我为我糟糕的英语道歉 希望有人能理解我的问题并帮助我 我正在开发一个使用大量 post 调用的项目 我想通过为所有调用添加相同的验证来改进它们 我不想一一更改所有脚本 那么有没有办法覆盖 post 函数以同时向所有脚本添加相同的内容
  • 如何在 Android 中使用选项卡小部件? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 谁能告诉我如何制作tab widget在安卓中 有一个开发人员指南展示了如何实现选项卡式活动 片段http developer android co
  • 用于浮点阈值操作的 SIMD

    我想让一些向量计算更快 并且我相信用于浮点比较和操作的 SIMD 指令可以有所帮助 操作如下 void func const double left const double right double res const size t si
  • Django 用不同的字段注释计数

    我有两个松散定义的模型 如下所示 class InformationUnit models Model username models CharField max length 255 project models ForeignKey P
  • 使用Python解析Gmail并将所有早于日期的内容标记为“已读”

    长话短说 我创建了一个新的 Gmail 帐户 并将其他几个帐户链接到它 每个帐户都有 1000 条消息 我正在导入这些帐户 所有导入的消息均以未读状态到达 但我需要它们显示为已读 我对 python 有一点经验 但我只使用 mail 和 i
  • 如何在#include 上将库名称放在头名称之前?

    我正在使用 cmake 编译具有以下结构的项目 Root LibA inc src LibB inc src main cpp 我在每个 LibX 每个 src 和 Root 文件夹上都有 CMakeLists 我的项目正在按预期编译和运行
  • 正则表达式匹配不包含所有指定元素的字符串

    我想找到一个正则表达式来匹配不包含所有指定元素的字符串 无论它们的顺序如何 例如 给定以下数据 one two three four one three two one two one three four 传递话语two three正则表
  • pip 抛出“TypeError: deprecated() ”错误

    我正在尝试安装一些软件包并开始出现错误 然后在ubuntu中使用多个命令更新一些东西 但错误是相似的 pip install U pip setuptools or python3 m pip install upgrade pip or
  • 来自现有文件的 NetBeans GUI 生成器

    我是 NetBeans IDE 的新手 我正在使用 NetBeans GUI 构建器来创建 GUI 我通过右键单击包并单击 新建 然后单击新的 JFrame 表单来创建一个新文件 它运行良好 但我有一个带有 JFrame 的 java 文件
  • 在 Django 模板中渲染外部定义的块

    我正在为 Django 编写一个简单的类似博客的应用程序 并试图获得首页帖子限制为 5 个的效果 并具有一次列出大约 100 个帖子的综合存档 100不现实 只是扔一个数字 由于博客文章块在两个页面之间看起来完全相同 减去显示的数量 因此我
  • django boto3:NoCredentialsError - 无法找到凭据

    我正在尝试使用boto3在我的 django 项目中将文件上传到 Amazon S3 凭证定义在settings py AWS ACCESS KEY xxxxxxxx AWS SECRET KEY xxxxxxxx S3 BUCKET xx
  • 如何在 VBA 中根据 A 列重复名称将整个行复制到其各自的工作表?

    我当前的代码将尝试使用 VBA 将基于列 A 重复名称的整行复制到其各自的工作表 如下所示 但它只适用于第一个重复的名称 而不适用于其余的名称 当我检查我的代码时 我意识到我的目标 在目标 Lbound到Ubound部分的部分 始终为0 所
  • 如何使用jquery或ajax以10秒的间隔刷新div

    任何帮助都值得这里的人们表示感谢 我正在用 php 构建一个 Web 应用程序 并且使用 Yii MVC 框架 它有很多内置工具 正如标题所说 我需要每10秒刷新一次div 目前我有这个ajax功能
  • 将数据标签添加到折线图[重复]

    这个问题在这里已经有答案了 我想使用 pandas matplotlib 在该图的圆圈顶部添加数据标签 使用 pandas 和 月份 作为索引从 Excel 文件加载数据 Importing the data Path xyz xlsx d
  • 如何对具有重置条件的列进行 SUM() ?

    我使用的是 Postgresql 9 2 我需要对按钮向上的数量进行求和 初始值为 100 但是如果我遇到名为 X 的行 我需要从该行中的 qty 值重新启动 SUM 例如 itemorder name qty 1 A 20 2 A2 35
  • Selenium/PageFactory:使用父元素的@FindBy查找子元素?

    我正在尝试将我的硒测试转换为使用页面对象模型 以及扩展的 FindBy 我有几个像这样的对象定义 public WebElement objectParent return driver findElement By name parent
  • 如何从 YouTube Analytics api 的 json 文件加载客户端凭据?

    我想从朋友的 YouTube 频道检索获利数据 我使用下面的 python 代码从他那里获取身份验证凭据 然后将其保存到 JSON 文件中 在此过程中 他必须单击链接并将密钥发送给我 我想通过保存凭据数据来避免这种情况 我想我已经做到了 但