Конечные точки 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, хотя

  • ImportError: невозможно импортировать имя SignedJwtAssertionCredentials
  • Ошибка импорта: авторизация API Google Analytics
  • Войдите на сайт, войдя в аккаунт Google, используя Python
  • поставщик google app engine oauth2
  • Существуют ли (по-прежнему) нет достойные библиотеки Pyramid OAuth2 Provider?
  • Провайдер подключения OpenID в Python
  • App Engine OAuth2.0 разрешил работу cron для анализа Google Sheet
  • У меня есть «Код авторизации» для моего приложения. Но как я могу использовать его для публикации в блогере с помощью gdata-python-client?
  •  
    Interesting Posts for Van-Lav

    Альтернатива передаче глобальных переменных вокруг классов и функций

    Вернуться к python 2.7 Anaconda

    Построение океанов на картах с использованием базовой карты и питона

    RegExp: Получить текст в круглых скобках

    Предпочтительный стиль Python (или любой язык, на самом деле): следует ли использовать, когда возвращается?

    Переключение между различными программами, использующими scipy ode

    Numpy: самый быстрый способ проверить, имеют ли все элементы в массиве одинаковые знаки?

    Данные POST в файл CGI с использованием XMLHttpRequest приводят к тому, что BadHeader

    Python: ttk: отключить / включить кнопку

    Получить цвет ячеек из .xlsx

    не может добавить встроенную в django админную инфраструктуру сайта

    Python. Селен. Как подождать нового окна?

    Найти путь из списка кортежей в Python

    Есть ли хороший способ отправить данные из контекста python на C ++ без использования слишком большой копии

    Какие рекомендуемые ресурсы и учебные пособия для изучения инструментария библиотеки VTK?

    Python - лучший язык программирования в мире.