401 Доступ запрещен. Вы не авторизованы для чтения записей активности - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь получить данные из API отчетов.

Я получаю токен доступа для служебной учетной записи и использую его в запросе GET. Ответ всегда

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "authError",
        "message": "Access denied. You are not authorized to read activity records.",
        "locationType": "header",
        "location": "Authorization"
      }
    ],
    "code": 401,
    "message": "Access denied. You are not authorized to read activity records."
  }
}

Я использую Java для запроса. Без библиотеки API Google (требование клиента). Исходный код

String urlString = "https://www.googleapis.com/admin/reports/v1/activity/users/all/applications/drive?maxResults=25";

        URL url = new URL(urlString);
        HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();

        // optional default is GET
        urlConnection.setRequestMethod("GET");
        urlConnection.setDoInput(true);

        // Add request header.
        urlConnection.setRequestProperty("Authorization", "Bearer " + accessToken.getValue());

        int responseCode = urlConnection.getResponseCode();

        System.out.println("\nSending 'GET' request to URL : " + urlString);
        System.out.println("Response Code : " + responseCode);

        BufferedReader bufferedReader;

        if (responseCode == 200) {
            bufferedReader = new BufferedReader(
                    new InputStreamReader(urlConnection.getInputStream()));
        } else {
            bufferedReader = new BufferedReader(
                    new InputStreamReader(urlConnection.getErrorStream()));
        }

        String inputLine;
        StringBuffer stringBuffer = new StringBuffer();

        while ((inputLine = bufferedReader.readLine()) != null) {
            stringBuffer.append(inputLine);
        }

        bufferedReader.close();

        System.out.println(stringBuffer.toString());

Не могли бы вы, пожалуйста, помочь мне, что мне не хватает?

С уважением, Aleks.

1 Ответ

0 голосов
/ 28 августа 2018

"Доступ запрещен. У вас нет прав на чтение записей активности.",

означает, что пользователь, с которым вы прошли аутентификацию, не имеет доступа к тому, что вы пытаетесь сделать. Чтобы использовать служебную учетную запись с этим API, необходимо настроить делегирование по всему домену

В корпоративных приложениях может потребоваться программный доступ к данным пользователя без какой-либо ручной авторизации с его стороны. В доменах G Suite администратор домена может предоставлять сторонним приложениям доступ к данным своих пользователей по всему домену - это называется делегированием полномочий по всему домену. Чтобы делегировать полномочия таким образом, администраторы домена могут использовать учетные записи служб с OAuth 2.0.

  1. Перейдите в консоль администратора домена G Suite.
  2. Выберите Security из списка элементов управления. Если вы не видите «Безопасность» в списке, выберите «Дополнительные элементы управления» на серой панели внизу страницы, затем выберите «Безопасность» в списке элементов управления.
  3. Выберите Расширенные настройки из списка параметров.
  4. Выберите Управление доступом стороннего клиента OAuth в разделе Аутентификация.
  5. В поле Имя клиента введите идентификатор клиента учетной записи службы.
  6. В поле «Одна или несколько областей API» введите список областей, к которым вашему приложению должен быть предоставлен доступ (см. Изображение ниже). Например, если вам нужен общедоменный доступ к отчетам об активности, введите: https://www.googleapis.com/auth/admin.reports.audit.readonly
  7. Нажмите кнопку Авторизовать.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...