首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >广告性能报告中具有adType维度的403禁用响应

广告性能报告中具有adType维度的403禁用响应
EN

Stack Overflow用户
提问于 2020-03-12 16:21:40
回答 1查看 45关注 0票数 2

我在获取带有adType维度的youtube analytics api的广告性能报告时遇到了问题,我得到了以下响应:

代码语言:javascript
运行
复制
{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "Forbidden",
    "reason" : "forbidden"
  } ],
  "message" : "Forbidden"
}

正如文档(https://developers.google.com/youtube/analytics/channel_reports#ad-performance-reports)中指定的,我使用示例中指定的作用域生成了凭据:

代码语言:javascript
运行
复制
List<String> scopes = Lists.newArrayList(
                "https://www.googleapis.com/auth/yt-analytics-monetary.readonly",
                "https://www.googleapis.com/auth/yt-analytics.readonly",
                "https://www.googleapis.com/auth/youtube.readonly"
        );

// Authorize the request.
Credential credential = Auth.authorize(scopes, "analyticsreports");

然后这是我请求报告的方式:

代码语言:javascript
运行
复制
public QueryResponse getAdPerformaceReportByVideo(String channelId, String videoId, String startDate, String endDate) throws IOException {
        UserCredentials userCredentials = buildUserCredentials();
        userCredentials.refresh();

        final HttpRequestInitializer httpRequestInitializer = new HttpCredentialsAdapter(userCredentials);
        final HttpTransport httpTransport = new NetHttpTransport();
        final JsonFactory jsonFactory = new JacksonFactory();

        YouTubeAnalytics youTubeAnalytics = new YouTubeAnalytics.Builder(httpTransport, jsonFactory, httpRequestInitializer)
                .setApplicationName("myapp")
                .build();

        final YouTubeAnalytics.Reports.Query request = youTubeAnalytics.reports().query();
            try {
                final QueryResponse queryResponse = request.setStartDate(startDate)
                        .setEndDate(endDate)
                        .setIds("channel==" + channelId)
                        .setMetrics("grossRevenue,adImpressions,cpm")
                        .setDimensions("adType,day")
                        .setFilters("video==" + videoId)
                        .execute();

                return queryResponse;
            } catch (IOException e) {
                throw new YoutubeInsightsException("", e);
            }
    }

    private UserCredentials buildUserCredentials() {

        return UserCredentials.newBuilder()
                .setClientSecret(this.clientSecret)
                .setClientId(this.clientId)
                .setRefreshToken(this.youtubeRefreshToken)
                .build();
    }

我只使用刷新令牌来为每个请求提供一个新的访问令牌,这对于使用所有其他维度的报表都非常有效,特别是除了这个维度。

查询此维度是否有其他特殊要求?

我很感谢你的帮助。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-04-28 16:44:24

我发现我们需要CMS-Account来检索这里的数据:

How to use YouTube analytics monetary

这应该在API文档中指定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60650079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档