Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Youtube Analytics离线访问请求(当作为品牌而不是用户进行身份验证时)_Javascript_Google Apps Script_Oauth 2.0_Google Oauth_Youtube Analytics Api - Fatal编程技术网

Javascript Youtube Analytics离线访问请求(当作为品牌而不是用户进行身份验证时)

Javascript Youtube Analytics离线访问请求(当作为品牌而不是用户进行身份验证时),javascript,google-apps-script,oauth-2.0,google-oauth,youtube-analytics-api,Javascript,Google Apps Script,Oauth 2.0,Google Oauth,Youtube Analytics Api,这些都是非常类似的问题,但是,我作为所有者登录。脚本位于所有者的驱动器中 我的问题 我一直在尝试使用GAS(googleapps脚本)从内容所有者那里访问YouTube分析报告。有两个帐户:品牌帐户(保存数据,即视频内容)和用户帐户。他们都使用相同的凭证(电子邮件和pwd)。当授权为用户时,我得到403(禁止)。当授权为品牌时,我一次又一次地被要求授权离线访问,阻止我提出请求 我所尝试的… 从节点运行,使用OAUTH游乐场令牌,它可以工作。但我需要坚持加油 使用:硬编码凭据(类似于节点解决方案

这些都是非常类似的问题,但是,我作为所有者登录。脚本位于所有者的驱动器中

我的问题

我一直在尝试使用GAS(googleapps脚本)从内容所有者那里访问YouTube分析报告。有两个帐户:品牌帐户(保存数据,即视频内容)和用户帐户。他们都使用相同的凭证(电子邮件和pwd)。当授权为用户时,我得到403(禁止)。当授权为品牌时,我一次又一次地被要求授权离线访问,阻止我提出请求

我所尝试的…

  • 从节点运行,使用OAUTH游乐场令牌,它可以工作。但我需要坚持加油
  • 使用:硬编码凭据(类似于节点解决方案),但我无法设置刷新令牌。我得到了401(无效凭证)-我相信持票人令牌已过期
  • 设置并启用youtube和youtube分析API的凭据
  • 废弃旧证书并将新项目附加到GAS
  • 删除隐私设置中的身份验证并重新验证
  • 切换使用不安全脚本选项并重复步骤3
  • 在ids参数的contentOwner和channel参数之间切换
  • 注意:我有两个OAUTH2凭据应用程序脚本和web客户端都设置为web应用程序
气体代码

function test(){
   YouTubeAnalytics.Reports.query("contentOwner==id", "2017-03-01", "2017-03-31", "likes");
}
最后的想法

我相信品牌和用户之间存在着断开连接,因此品牌没有获得对OAUTH 2令牌的相同访问权。因此,它从不生成刷新令牌。因此,请求看到我是授权的通道所有者,但它无法完成OAUTH流

如果这是真的,为什么,我该如何解决?如果没有,您认为可能是什么错误

我刚刚意识到脚本在用户帐户中,而不是品牌帐户中。这会影响验证吗


同样在实际频道中,用户被列为主要所有者。

我认为问题与应用程序脚本有限的OAuth范围有关。打开脚本编辑器并导航到资源->高级谷歌服务,您将看到YouTube的报告API不受支持。但是,您可以通过使用服务帐户来解决这个问题。设置它们是一件痛苦的事情,但是一旦您设置并运行它们,您就可以显式地请求对GAS的API进行授权调用所需的作用域

以下是一些让您开始学习的链接:

例如,您需要向下滚动到标题为“准备进行授权API调用”的部分。选择HTTP/REST选项卡,它将引导您完成设置服务帐户所需的步骤(您需要创建一个JWT-JSONWebT从您的Google控制台发出,用于API调用)。您还需要从提供的第二个链接中检索YouTube报告API所需的OAuth范围URL。设置完毕后,您就可以使用URLFetchApp直接从应用程序脚本向API发出请求。祝你的项目好运

还有一件事。查看YouTube报告API。通过使用资源管理器,您可以获得在UrlFetchApp调用中需要使用的URL端点(和请求方法)


更新日期2017年4月28日


另外,请确保从您的应用程序中启用YouTube报告API

它也适用于我的个人账户——我在几分钟内就建立了这个账户——我真是不知所措。