gpt4 book ai didi

google-cloud-platform - 对外部 Google 品牌帐户的 Oauth 访问

转载 作者:行者123 更新时间:2023-12-05 07:15:05 31 4
gpt4 key购买 nike

我公司有一个Google Brand Account管理我们的 YouTube (YT) channel 。我们正在尝试使用 YouTube Analytics & Reporting API 自动导出有关我们 channel 的指标。为此,我们在 GCP 组织中创建了一个应用程序,并在该应用程序中创建了一个 Oauth 客户端。在我们的 GCP 组织中检索用户拥有的 channel 的 YouTube 数据时一切正常。但是,拥有我们感兴趣的 YouTube channel 的品牌帐户不是我们 GCP 组织的成员。这意味着当尝试使用我们的 Oauth 客户端访问该 channel 时,我们会收到以下错误:

Error 403: org_internal
This client is restricted to users within its organization.

通过搜索在线文档,我们似乎可以执行以下操作之一:

  1. 将我们的应用程序从 API 和服务 -> OAuth 同意屏幕部分设为外部将品牌帐号迁移到我们的 GCP 组织
  2. 我不知道如何做 2. 以及它是否真的可行。 1. 对我来说似乎有点过分,因为我们真的不想访问任何拥有 Google 帐户的用户的数据,但这可能是唯一的方法。因此,我正在寻求有关如何最好地进行的帮助,以便我们可以在我们的 GCP 组织中使用 OAuth 客户端从我们的 YT channel 获取分析数据。

最佳答案

看起来这是首次记录here .它被 Google 标记为“无法修复”,不知道为什么。

我能够使用 this OAuth Playground (OAP) 变通办法让我的应用程序正常工作。这是一个非常糟糕的解决方法,因为 token 只能工作一个小时,然后您必须在 Playground 上手动刷新。

从 OAP 获得 token 后,这是我正在使用的代码。

import os, json
from pathlib import Path
import google.oauth2.credentials
from googleapiclient.discovery import build

# pasted from OAP, note only access_token is actually needed
Path('oap.json').write_text('''
{
"access_token": "tokenstring",
"scope": "https://www.googleapis.com/auth/youtube.readonly https://www.googleapis.com/auth/yt-analytics.readonly",
"token_type": "Bearer",
"expires_in": 3599,
"refresh_token": "refreshtoken"
}
''')

TOKEN_FILE = 'oap.json'

# For Reference
# SCOPES = ['https://www.googleapis.com/auth/yt-analytics.readonly',
# 'https://www.googleapis.com/auth/youtube.readonly']

API_SERVICES = [
('youtubeAnalytics', 'v2'),
('youtube', 'v3')
]

oap = json.load(open(TOKEN_FILE, 'r'))
creds = google.oauth2.credentials.Credentials(oap['access_token'])

service_list = []
for API_SERVICE_NAME,API_VERSION in api_services:
service = build(API_SERVICE_NAME, API_VERSION, credentials = creds)
service_list.append(service)

ytAnalytics, ytData = service_list

# test ytData
req = ytData.channels().list(
part = 'id,snippet',
mine=True)
res = req.execute()
print(res)
for channel in res['items']:
print('Channel:',channel['snippet']['title'])

关于google-cloud-platform - 对外部 Google 品牌帐户的 Oauth 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59716587/

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