【问题标题】:execute oauth2 headless in python going against google apis在 python 中执行 oauth2 headless 与 google apis 对抗
【发布时间】:2019-11-26 21:28:16
【问题描述】:

Google 的 youtube Analytics API 仅基于 Oauth2。 我正在使用以下测试脚本来查看是否可以访问:

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']

API_SERVICE_NAME = 'youtubeAnalytics'
API_VERSION = 'v2'
CLIENT_SECRETS_FILE = 'client_secret.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)

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==MINE',
      startDate='2017-01-01',
      endDate='2017-12-31',
      metrics='estimatedMinutesWatched,views,likes,subscribersGained',
      dimensions='day',
      sort='day'
  )

我的问题是这个脚本要求我打开浏览器,设置链接,登录,然后获取令牌电缆。

有没有办法在“无头”模式下做到这一点? 我需要提取这些 API 以进行机器对机器的传输。

谢谢!

【问题讨论】:

    标签: python google-api google-api-client google-api-python-client


    【解决方案1】:

    执行一次,然后将credentials = flow.run_console() 返回的凭据对象保存到数据库或文件中。这包含一个“刷新令牌”,可以在后续的 api 调用中使用,这意味着您可以跳过 flow.run_console 步骤,只需在build(API_SERVICE_NAME, API_VERSION, credentials = credentials) 调用中使用保存的credentials

    这里的文档中有关于此的注释:

    https://developers.google.com/youtube/reporting/guides/authorization/installed-apps#exchange-authorization-code

    【讨论】:

      猜你喜欢
      • 2016-12-27
      • 1970-01-01
      • 2023-03-04
      • 2012-06-20
      • 1970-01-01
      • 2013-03-10
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多