Google cloud platform Oauth访问外部谷歌品牌帐户
我的公司有一个管理YouTube(YT)频道的团队。我们正在尝试使用YouTube Analytics&Reporting API自动导出有关我们频道的指标。为此,我们在GCP组织中创建了一个应用程序,并在该应用程序中创建了一个Oauth客户端。在我们的GCP组织中检索用户拥有的频道的YouTube数据时,一切正常。然而,拥有我们感兴趣的YT渠道的品牌客户不是我们GCP组织的成员。这意味着,当尝试使用Oauth客户端访问该通道时,会出现以下错误:Google cloud platform Oauth访问外部谷歌品牌帐户,google-cloud-platform,Google Cloud Platform,我的公司有一个管理YouTube(YT)频道的团队。我们正在尝试使用YouTube Analytics&Reporting API自动导出有关我们频道的指标。为此,我们在GCP组织中创建了一个应用程序,并在该应用程序中创建了一个Oauth客户端。在我们的GCP组织中检索用户拥有的频道的YouTube数据时,一切正常。然而,拥有我们感兴趣的YT渠道的品牌客户不是我们GCP组织的成员。这意味着,当尝试使用Oauth客户端访问该通道时,会出现以下错误: Error 403: org_internal
Error 403: org_internal
This client is restricted to users within its organization.
通过搜索在线文档,我们似乎可以执行以下操作之一:
看起来这是第一次被记录下来。这是谷歌制造的“无法修复”,不知道为什么 我能够使用OAuth Playway(OAP)解决方案让我的应用程序正常工作。这是一个非常糟糕的解决办法,因为令牌只能工作一个小时,然后你必须在操场上手动刷新 一旦您从OAP获得令牌,下面是我正在使用的代码
导入操作系统,json
从pathlib导入路径
导入google.oauth2.credentials
从GoogleAppClient.discovery导入生成
#从OAP粘贴,注意实际上只需要access_令牌
路径('oap.json')。写入文本('''
{
“访问令牌”:“令牌字符串”,
“范围”:https://www.googleapis.com/auth/youtube.readonly https://www.googleapis.com/auth/yt-analytics.readonly",
“令牌类型”:“承载者”,
“expires_in”:3599,
“刷新令牌”:“刷新令牌”
}
''')
令牌_文件='oap.json'
#供参考
#作用域=['https://www.googleapis.com/auth/yt-analytics.readonly',
# 'https://www.googleapis.com/auth/youtube.readonly']
API_服务=[
('youtubeansalytics','v2'),
('youtube','v3')
]
oap=json.load(打开(令牌文件'r'))
creds=google.oauth2.credentials.credentials(oap['access\u token'])
服务列表=[]
对于API_服务名称,API_服务中的API_版本:
服务=构建(API\U服务\U名称、API\U版本、凭证=凭证)
服务列表。附加(服务)
YTDanalytics,ytData=服务列表
#测试数据
req=ytData.channels().list(
part='id,snippet',
我的(正确)
res=req.execute()
打印(res)
对于res['items']中的频道:
打印('Channel:',Channel['snippet']['title'])