Google cloud platform 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

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

Error 403: org_internal
This client is restricted to users within its organization.
通过搜索在线文档,我们似乎可以执行以下操作之一:

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

  • 看起来这是第一次被记录下来。这是谷歌制造的“无法修复”,不知道为什么

    我能够使用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'])