GoogleJsonResponseException 403 Forbidden PERMISSION_DENIED

Я использую Google REST Api для получения списка электронных таблиц. Все работает, когда к нему обращается моя учетная запись.

Но когда я пытаюсь использовать чужую учетную запись, я получаю эту ошибку:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden {
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "The caller does not have permission",
"reason" : "forbidden"
} ],
"message" : "The caller does not have permission",
"status" : "PERMISSION_DENIED"
}

Там написано, что у меня нет доступа к моему скрипту Google, но он настроен как видимый и доступен для всех.

Код:

    private Object getDataFromApi(ExecutionRequest request)
            throws IOException
    {

        if (BuildConfig.DEBUG) {
            request.setDevMode(true); // it will take saved version of script and not the published one
        }

        // Make the request.
        Operation op =
                mService.scripts().run(SCRIPT_ID, request).execute();

1 ответ

Решение

Я обнаружил, что проблема была в коде:

if (BuildConfig.DEBUG) {
    request.setDevMode(true); // it will take saved version of script and not the published one
}

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

Когда я отключаю этот режим разработки или устанавливаю версию выпуска, тогда все в порядке.

Измените SCOPE с SheetsScopes.SPREADSHEETS_READONLY на SheetsScopes.SPREADSHEETS.

частный статический окончательный список SCOPES = Arrays.asList(SheetsScopes.SPREADSHEETS);

Другие вопросы по тегам