Конечные точки OAuth от Google App Engine, бросающие 400 в производство

Я реализовал экспериментальную поддержку OAuth для Google App Engine с использованием Python и работаю локально, но конечные точки бросают 400, когда я развертываю приложение apps.

Например, url http (s): //my-app.appspot.com/_ah/OAuthGetRequestToken возвращает 400, но локально этот шаблон url ведет себя как и ожидалось.

Я пробовал как http, так и https, и предположил, что appspot обрабатывает сертификат ssl.

ОБНОВИТЬ

Я использовал OAuth Playground для тестирования своего кода. Несмотря на документацию, похоже, требуется регистрация вашего приложения. Перейдите сюда, чтобы узнать, как зарегистрироваться. Согласно документации во время процесса регистрации, сертификат не требуется при работе в App Engine. Игровая площадка показывает более подробную информацию об ошибке – «подпись недопустима». Если я правильно понимаю, подпись создается из базовой строки подписи. В этом случае я использую базовую строку 7DYB6MJ2s-IQcd7VJYJUmcct.

GET /accounts/OAuthGetRequestToken?scope=https%3A%2F%2Fmail.google.com%2Fmail%2Ffeed%2Fatom HTTP/1.1 Host: www.google.com Accept: */* Authorization: OAuth oauth_version="1.0", oauth_nonce="168cfd60a93a46caa38dddfdcedd9de9", oauth_timestamp="1305315895", oauth_consumer_key="xxxxxxx.appspot.com", oauth_callback="http%3A%2F%2Fgooglecodesamples.com%2Foauth_playground%2Findex.php", oauth_signature_method="HMAC-SHA1", oauth_signature="4J5faUujE0VNaybyvFCiEPY7DQ8%3D" HTTP/1.1 400 Bad Request Content-Type: text/plain; charset=UTF-8 Date: Fri, 13 May 2011 19:44:55 GMT Expires: Fri, 13 May 2011 19:44:55 GMT Cache-Control: private, max-age=0 X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Content-Length: 451 Server: GSE **signature_invalid** base_string:GET&https%3A%2F%2Fwww.google.com%2Faccounts%2FOAuthGetRequestToken&oauth_callback%3Dhttp%253A%252F%252Fgooglecodesamples.com%252Foauth_playground%252Findex.php%26oauth_consumer_key%3Dxxxxxx.appspot.com%26oauth_nonce%3D168cf60a94caa38e2defdcedd9de9%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1305315895%26oauth_version%3D1.0%26scope%3Dhttps%253A%252F%252Fmail.google.com%252Fmail%252Ffeed%252Fatom 

ЗАКЛЮЧИТЕЛЬНОЕ ОБНОВЛЕНИЕ

Существовали две вещи, вызывающие 400. Во-первых, приложение не было зарегистрировано. Документация Google говорит, что это необязательно, но это не так. Во-вторых, запрос не был правильно подписан. Вот отличный отладочный инструмент для тестирования ваших запросов OAuth: Oauth Playground

3 Solutions collect form web for “Конечные точки OAuth от Google App Engine, бросающие 400 в производство”

Вы должны зарегистрировать свой домен, чтобы OAuth работал над производством.

Хотя в следующих документах указано, что регистрация не является обязательной: http://code.google.com/apis/accounts/docs/RegistrationForWebAppsAuto.html

Он не работает без регистрации с января.

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

Какой метод запроса это? В dev_appserver_oauth.py я вижу:

 if method != 'GET' and method != 'POST': outfile.write('Status: 400\r\n') return 

Таким образом, он будет работать только для запросов GET или POST .

Сначала убедитесь, что вы включили федеративный вход в свои настройки приложения.

панель управления скриншотом

Из вашего описания это звучит так, как будто вы просто выполняете прямой запрос GET в /_ah/OAuthGetRequestToken без каких-либо других необходимых параметров oAuth. Это будет работать на dev_appserver, так как это просто макет oAuth, чтобы вы могли использовать свой код.

См. Параметры, перечисленные на странице описания OAuthGetRequestToken, для того, что требуется и как бороться с подписанием. Я считаю, что вы можете игнорировать scope GAE, хотя

  • Обновление файлов cookie в сеансе с помощью модуля python-requests
  • Как вставить строку в мою таблицу слияния Google, используя Python
  • Есть ли рабочая библиотека OAuth для Python 3?
  • Получение ошибки: redirect_uri_mismatch URI перенаправления в запросе: http: // localhost: 8080 / oauth2callback не соответствует зарегистрированному URI редиректа
  • Ошибка атрибута при попытке запустить быстрый запуск API Gmail в Python
  • Как проверить подлинность с помощью API настроек электронной почты Google, используя учетную запись службы oauth2 Клиент Python?
  • Аутентификация Google Apps на основе python Gdata
  • Как обновить статус на twitter в джанго с Oauth
  • API сайтов Google + OAuth2 (на Appengine)
  • Ошибка импорта: авторизация API Google Analytics
  • Использование API LinkedIn с Python
  • Python - лучший язык программирования в мире.