TokenResponseException: 401 Несанкционированный

Я хочу реализовать запрос Google Sheet API с помощью учетной записи службы. Я создал этот код:

HttpTransport httpTransport = new NetHttpTransport();
        JacksonFactory JSON_FACTORY = new JacksonFactory();

        ClassLoader classLoader = this.getClass().getClassLoader();
        java.io.File path = new java.io.File(classLoader.getResource("i-6dc0c917ee63.p12").getFile());

        GoogleCredential credential = new GoogleCredential.Builder()
            .setTransport(httpTransport)
            .setJsonFactory(JSON_FACTORY)
            .setServiceAccountId("test221@sonora-project.iam.gserviceaccount.com")
            .setServiceAccountPrivateKeyFromP12File(path)
            .setServiceAccountScopes(Arrays.asList(SheetsScopes.SPREADSHEETS))
            .setServiceAccountUser("sonoraw@gmail.com")
            .build();

        Sheets service = new Sheets.Builder(httpTransport, JSON_FACTORY, null)
            .setApplicationName("project")
            .setHttpRequestInitializer(credential).build();

        Sheets.Spreadsheets spreadsheets = service.spreadsheets();
        Spreadsheet includeGridData = spreadsheets.get(spreadsheetId).execute();

Но я получаю эту ошибку:

com.гуглить.прикладной программный интерфейс.клиент.автор.oauth2.TokenResponseException: 401 Несанкционированный

при этом методе .execute();

Вы знаете, как я могу исправить эту проблему?

1 ответ

  1. Основываясь на стандартных ответах на ошибку, происходит ошибка 401, invalidCredentialsи это указывает на то, что маркер auth недействителен или истек.

    рекомендуемое действие:

    Не повторяйте попытку без устранения проблемы. Вам нужно получить новый токен аутентификации.

    При этом может потребоваться проверить срок действия маркера, в котором указано, что необходимо написать код, чтобы предвидеть возможность того, что предоставленный маркер может больше не работать. Это также дает эти возможные причины, почему токен может перестать работать:

    • У пользователя отозван доступ.
    • Маркер не использовался в течение шести месяцев.
    • Пользователь изменил пароль, и маркер содержит области Gmail.
    • Учетная запись пользователя превысила определенное количество запросов маркеров.

    Надеюсь, это поможет!