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