403 Запрещенный ответ с измерением adType в отчете об эффективности рекламы - PullRequest
2 голосов
/ 12 марта 2020

У меня проблема с получением отчета об эффективности объявления с API-интерфейсом YouTube для аналитики с измерением adType. Я получаю следующий ответ:

{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "Forbidden",
    "reason" : "forbidden"
  } ],
  "message" : "Forbidden"
}

Как указано в документации (https://developers.google.com/youtube/analytics/channel_reports#ad -производство -reports ) Я сгенерировал учетные данные с областями, указанными в примере:

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");

Затем я запрашиваю отчет:

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();
    }

Я использую только refre sh токен, чтобы иметь токен fre sh для каждого запроса, он очень хорошо работает с отчетами, использующими все другие измерения, кроме этого, в частности.

Существуют ли какие-либо другие конкретные требования для запроса этого измерения ?

Я ценю вашу помощь.

Спасибо.

1 Ответ

0 голосов
/ 28 апреля 2020

Я обнаружил, что нам нужна CMS-учетная запись для получения этих данных здесь:

Как использовать аналитику YouTube в денежном выражении .

Это должно быть указано в документации API.

...