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

Gmail API выдает ошибку failedPrecondition

Я не могу заставить gmail api работать. Я использую межсерверную аутентификацию с JWT.

google-api-python-client==1.4.0
httplib2==0.9
oauth2client==1.4.7
pycrypto==2.6.1

Мой код выглядит так.

with open(CLIENT_SECRET_FILE) as f:
    data = json.loads(f.read())
    private_key = data['private_key']
    client_email = data['client_email']
    credentials = SignedJwtAssertionCredentials(client_email,   private_key, scope=OAUTH_SCOPE)

http = credentials.authorize(http)
gmail_service = build('gmail', 'v1', http=http)
try:
    threads =    gmail_service.users().messages().list(userId='me').execute()
except Exception as e:
    print e
    print e.content

Ответ

<HttpError 400 when requesting https://www.googleapis.com/gmail/v1/users/me/messages?alt=json returned "Bad Request">
{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "failedPrecondition",
    "message": "Bad Request"
   }
  ],
  "code": 400,
  "message": "Bad Request"
 }
}

Спасибо.


  • В этой учетной записи включена почта? Например, если они зарегистрировали учетную запись Google со своим адресом yahoo (и не создали учетную запись gmail) или это пользователь Google Apps for Work, у которого не включена почтовая служба, это может вызвать эту ошибку. Самый простой способ проверить это — войти в учетную запись на странице mail.google.com в браузере. 27.03.2015
  • Да. Тестирую на своем аккаунте. Я также пробовал это через Google API Explorer, и там все работает. В приведенном выше примере кода client_email — это адрес электронной почты, указанный в разделе API на странице консоли разработчика. 27.03.2015

Ответы:


1

Пытаться:

credentials = SignedJwtAssertionCredentials(client_email,
  private_key,
  scope=OAUTH_SCOPE,
  sub='[email protected]')

Sub= сообщает сервисной учетной записи, какую учетную запись вы хотите олицетворять. Без него вы аутентифицируетесь как пользователь учетной записи службы, у которого, как указал Эрик, нет почтового ящика Gmail.

28.03.2015
  • Спасибо. Это помогло. Я пробовал это раньше, но мои настройки безопасности не были обновлены, чтобы разрешить клиенту доступ к учетной записи. Сообщение об ошибке очень вводит в заблуждение, так как я не получал ошибку аутентификации. 28.03.2015
  • Новые материалы

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

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

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

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

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

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

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