Google Chat API 403 запрещен с помощью Spring Boot в пользовательских пространствахJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Google Chat API 403 запрещен с помощью Spring Boot в пользовательских пространствах

Сообщение Anonymous »

Я использую Spring Boot и учетную запись службы для отправки уведомлений в Google Chat. В моем приложении каждый пользователь указывает в своем профиле собственный целевой идентификатор пространства. Приложение получает этот идентификатор и отправляет сообщение в это пространство, настроенное пользователем.
Это работает для некоторых пользователей, но не работает для других из-за ошибки 403 Forbidden.

Код: Выделить всё

{
"error": {
"code": 403,
"message": "Permission denied to perform the requested action on the specified resource, or the resource doesn't exist.",
"status": "PERMISSION_DENIED"
}
}
Упрощенный код.
Мой код создает стандартный вызов RestTemplate к конечной точке Google Chat API. userConfiguredSpaceId является динамическим в зависимости от профиля пользователя.

Код: Выделить всё

@Service
public class GoogleChatService {
public void sendMessage(String message, String userConfiguredSpaceId) {
String accessToken = getServiceAccountAccessToken();
String url = "https://chat.googleapis.com/v1/spaces/" + userConfiguredSpaceId + "/messages";

HttpHeaders headers = new HttpHeaders();
headers.setBearerAuth(accessToken);
// ... build HttpEntity

// This line throws the 403 Forbidden
restTemplate.exchange(url, HttpMethod.POST, entity, String.class);
}
}
Ключевой результат отладки:
  • Моя учетная запись службы успешно проходит аутентификацию.
  • Важно отметить, что если пользователь, не прошедший проверку, меняет spaceId в своем профиле на заведомо исправный spaceId (который работает для меня), уведомление проходит успешно.
Это доказывает, что код моего приложения и логика аутентификации верны, а проблема связана с конкретный spaceId, предоставленный пользователем.
Мой вопрос:
Правильно ли сделать вывод, что эта ошибка 403 вызвана одной из этих двух проблем с конфигурацией?
  • SpaceId, хранящийся в профиле сбойного пользователя, недействителен (например, опечатка или из удаленного пространства).
  • SpaceId равен действителен, но моя учетная запись службы (client_email) не была добавлена в качестве участника в это конкретное пространство чата.
Есть ли какие-либо другие возможные причины, которые я упускаю из виду?

Подробнее здесь: https://stackoverflow.com/questions/798 ... fic-spaces
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»