Nano Hash - криптовалюты, майнинг, программирование

Не удается выдать себя за запрос oauth между службами к API календаря Google в ruby

Привет, я поздно ночью взламывал и тестировал клиент Google API для Ruby.

Я впал в ошибку, возможно, по недоразумению.

Что я уже сделал

  • Я уже создал приложение в консоли разработчика Google
  • Я включил API календаря
  • Я создал ключ сервера и загрузил файл p12.
  • Мне удалось увидеть эти метаданные календаря с помощью проводника Google API и браузера oauth, поэтому идентификаторы подтверждены, а также разрешения, поскольку oauth браузера может просматривать метаданные

Что я пытаюсь сделать:

Я пытаюсь получить метаданные (я попробую события позже) из частного общего календаря, где у меня есть разрешения на чтение (через группу) в приложениях Google для рабочей учетной записи в Ruby на службе для аутентификации службы

Как я пытаюсь это сделать

С этим кодом:

require 'google/api_client'
require 'pp'
client = Google::APIClient.new

cal = client.discovered_api('calendar','v3')

id = '[email protected]'  # id is the confirmed calendar ID

key = Google::APIClient::KeyUtils.load_from_pkcs12('sl.p12', 'notasecret')
client.authorization = Signet::OAuth2::Client.new(
  :token_credential_uri => 'https://accounts.google.com/o/oauth2/token',
  :audience => 'https://accounts.google.com/o/oauth2/token',
  :scope => 'https://www.googleapis.com/auth/calendar',
  :issuer => '[email protected]',  # confirmed issuer

  :signing_key => key
)

client.authorization.fetch_access_token!

result = client.execute(
  :api_method => cal.calendars.get,  
  :parameters => { 'calendarId' => id }  
)

puts result.response.body

pp result

Собраны результаты

Когда я это делаю, я получаю 404, что-то вроде «этого календаря не существует».

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "notFound",
        "message": "Not Found"
      }
    ],
    "code": 404,
    "message": "Not Found"
  }
}

Но если я изменю идентификатор на «основной»

Я получил:

{
 "kind": "calendar#calendar",
 "etag": "\"dAAhx6wYoPw2vqRAe54lk5wa0XQ/WEglF6_c5pVHKyggcENvvX1cS9g\"",
 "id": "[email protected]",    #same as issuer id ??? WTF
 "summary": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com",
 "timeZone": "UTC"
}

Это похоже на календарь, но это похоже на календарь по умолчанию для учетной записи «эмитент электронной почты», которая отображается в поле «электронная почта» ключа сервера.

Я также пытался добавить поле :person = 'email' в client.authorization, но потом получаю сообщение об ошибке при создании токена авторизации.

Я не смог найти способ получить доступ к API в качестве другой почтовой учетной записи, удаленной от этого @developer.gserviceaccount.com, так что я делаю неправильно?


Ответы:


1

Чтобы разрешить учетная запись службы для олицетворения любого пользователя в этом домене, и в этом случае вы должны передать параметр :person => 'email'.

02.11.2014
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..