Создание черновиков электронной почты с помощью Gmail API на Ruby (google-api-ruby-client 0.9)
В настоящее время я пробую Ruby и Google API для Ruby, и у меня возникают трудности с доступом к моей учетной записи Gmail и созданием черновиков с ее помощью (через create_user_draft
) используя Сервисную учетную запись. Я успешно аутентифицировал свою сервисную учетную запись с помощью API (создаются токены доступа).
Я могу использовать это с Google::Apis::DriveV2::DriveService::list_files
но не на GmailV1
методы.
Я использую этот код для авторизации учетной записи службы и области действия https://www.googleapis.com/auth/gmail.compose
авторизация
def authorise
@jsonKeyIo = self.loadCredentialsFile
gAuthDefaultCreds = @@gAuthDefaultCreds
serviceAccountCredentials = gAuthDefaultCreds.make_creds(
{json_key_io: @jsonKeyIo, scope: @scope})
@service.authorization = serviceAccountCredentials
@service.authorization.fetch_access_token!
end
Он генерирует токен доступа с этим форматом: {"access_token"=>"ya29.access_token_codes_here", "token_type"=>"Bearer", "expires_in"=>3600}
Фрагмент создателя черновика
@@gmail = Google::Apis::GmailV1
@@service = @@gmail::GmailService.new
def createDraft(draftTitle, draftMessage)
draft = @@gmail::Draft.new
draft.message = draftMessage
@service.create_user_draft('my.email@gmail.com', draft)
end
Это бросает failedPrecondition: Bad Request (Google::Apis::ClientError)
с кодом выше, но когда я добавил options: {authorization: @accessToken }
в качестве третьего параметра create_user_draft
исключение становится Unauthorized (Google::Apis::AuthorizationError)
,
Можете ли вы помочь мне пойти по правильному пути? Я нахожу документацию по API, на сайтах API Google и в самом исходном коде, тусклой.
ОБНОВИТЬ
Я прочитал здесь, что для того, чтобы учетные записи служб работали с API Gmail, требуется платная учетная запись Google Apps (обычные учетные записи @gmail.com не будут работать), поскольку на консоли администратора мы должны включить области действия. для наших сервисных аккаунтов.
В настоящее время пробует войти в учетные данные JWT.