Apps脚本通过Youtube的API不断要求离线许可

时间:2016-04-07 19:55:09

标签: google-apps-script youtube youtube-data-api

我正在编写一个独立的Google Apps脚本,该脚本将查询Youtube Reports API并返回我的视频分析。

当我在Apps脚本中使用我们用于管理各种Youtube渠道的Google+信息页进行身份验证时,Apps脚本会一直要求我授权该脚本进行离线访问。

当我在我的个人Gmail帐户的新脚本项目中尝试相同的事情时,一切正常。但是这样做会有问题。当我通过自己的帐户查询Youtube.Channels.list时,我没有获得我拥有的任何其他频道的列表,只有我自己的个人频道。

我也尝试使用Youtube文档中的try it功能和Google+信息页,并且工作正常。

对于此脚本,我打开了以下高级服务&在Google Developer Console中启用:

  1. Youtube Data API
  2. Youtube Analytics API
  3. Google+ API(以防万一)
  4. 我还尝试将频道ID专门设置为频道== xxx并删除变量MyChannels和频道,我仍然得到相同的结果。

    什么是可能的解决方案?

    以下是我的代码示例:

    function youTubeAnalytics() {
         var myChannels = YouTube.Channels.list('id', {mine: true});
         var channel = myChannels.items[0];
         var channelId = channel.id;
         var analyticsResponse = YouTubeAnalytics.Reports.query(
         'channel==' + channelId,
         'estimatedMinutesWatched,views,likes,subscribersGained',
         {dimensions: 'video','max-results': '200',sort: '-views'});
         }
    

2 个答案:

答案 0 :(得分:1)

Channel Reports documentation中说:

  

授权请求的用户必须是频道的所有者

如果您的Apps脚本未由渠道所有者(即渠道经理)运营,则会出现此问题。换句话说,如果您的Apps脚本是使用您的Google帐户编写的,该帐户也被用作YouTube频道所有者,那么您就可以了,否则您会遇到身份验证问题。

我已经记录的解决方案是Using Google Apps Script to proxy YouTube Analytics Channel Reports,它提供了更多有关此内容的详细信息。

可能造成问题的另一个因素是您的YouTubeAnalytics查询缺失start-dateend-date - Report: Query documentation表示这些是必需参数。要解决此问题,您的功能可以重写为:

function youTubeAnalytics() {
  var myChannels = YouTube.Channels.list('id', {mine: true});
  var channel = myChannels.items[0];
  var channelId = channel.id;
  var analyticsResponse = YouTubeAnalytics.Reports.query(
  'channel==' + channelId, 
  '2010-01-01', 
  Utilities.formatDate(new Date(), 'GMT', 'yyyy-MM-dd'), 
  'estimatedMinutesWatched,views,likes,subscribersGained', 
  {dimensions: 'video','max-results': '200',sort: '-views'});
  Logger.log(analyticsResponse);
}

答案 1 :(得分:0)

您需要使用OAuth对Google AppScript进行身份验证。 IT将为您提供在线和离线访问。

Google API使用OAuth 2.0协议进行身份验证和授权。 Google支持常见的OAuth 2.0方案,例如Web服务器,已安装和客户端应用程序。

以下是关于如何在您的Apps脚本中使用OAuth的guideline