Мы используем Google API Ruby-клиент с делегированием по всему домену, чтобы обновлять контакты пользователей, анализировать электронные письма, связывать их с нашей БД и т. Д. До 1 апреля все работало просто отлично, однако с тех пор мы получаем unauthorized_client
сообщение об ошибке.
Signet::AuthorizationError (Authorization failed. Server message:)
{
"error": "unauthorized_client",
"error_description": "Client is unauthorized to retrieve access tokens using this method, or client not authorized for any of the scopes requested."
}
Что я уже пробовал?
Я пытался обновить гемы google-api-ruby-client
и googleauth
до последней версии.Ничего не изменилось.
Я также попытался (дважды) создать новую учетную запись службы, включив ее для DWD и добавив необходимую область в консоли администратора G Suite с идентификатором клиента учетной записи службы.Я ждал 24 часа после добавления областей в консоли администратора, и ничего не изменилось.
Обратите внимание, что в прошлом все работало нормально с теми же настройками.
Минимальный код для теста
Вот минимальный код, который выдает ошибку.
require 'googleauth'
require 'google/apis/gmail_v1'
creds = ENV['GOOGLE_SERVICE_ACCOUNT'] # JSON downloaded from cloud console
# is saved in this ENV variable
creds_json = JSON.parse(creds)
creds_json_io = StringIO.new(creds_json.to_json)
auth = Google::Auth::ServiceAccountCredentials.make_creds(
json_key_io: creds_json_io,
scope: [Google::Apis::GmailV1::AUTH_GMAIL_MODIFY]
)
auth.sub = 'admin@slideslive.com' # without this line everything works fine
# and I get the access token
auth.fetch_access_token
Насколько я могу судить, мы делаем все в соответствии с доступной документацией.У кого-нибудь есть предложения, пожалуйста?
Обновление
Я также пытался создать новый проект Google Cloud Platform в той же организации с добавлением только учетной записи службы, но все осталось прежним.