Создание черновиков электронной почты с помощью 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.

0 ответов

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