Почему Google App Engine добавляет путь к моему ' продолжить »во время входа в систему?

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

Основной рабочий процесс, при условии, что пользователь вошел в свою учетную запись Google, но его токен для экземпляра GAE истек:

  1. Пользователь открывает страницу A с установленным скриптом GM.
  2. Сценарий GM запускается и пытается получить доступ к экземпляру GAE с помощью GM_xmlhttpRequest ().
  3. Экземпляр GAE возвращает "login_needed | ". Сценарий GM извлекает адрес входа и устанавливает для него window.location .
  4. Пользователь перенаправляется на loginurl и в конечном итоге обратно на A. Однако на этот раз GM_xmlhttpRequest () возвращает фактические данные.

Последний шаг больше не работает, так как пользователь теперь перенаправлен на loginurl плюс некоторые , что дает 404 на целевом сайте.

Код GAE занимает примерно половину экрана кода. Соответствующий код аутентификации следующий:

if not users.get_current_user():
    self.response.headers['Content-Type'] = 'text/plain'
    self.response.out.write('login_needed|'+users.create_login_url(self.request.get('uri')))

Последовательность запросов следующая, все они вызваны перенаправлениями:

  • GET https://mygaeinstance.appspot.com/?uri=https://targetsite.com /
  • GET https://www.google.com/accounts/ServiceLogin?service=ah&passive=true&continue=https://appengine.google.com/_ah/conflogin%3Fcontinue%3Dhttps://targetsite. com / & ltmpl = gm & ahname = MyGAEInstance & sig =
  • GET https://appengine.google. com / _ah / conflogin? continue = https% 3A% 2F% 2Ftargetsite.com% 2F & pli = 1 & auth = <некоторый токен аутентификации base64>
  • GET https://targetsite.com/_ah/conflogin?state= < какое-то состояние base64>

targetite.com не нравится этот путь, и, как вы можете видеть, его не было в исходном аргументе continue, переданном appengine.google.com, который был просто "https: // targetite .com / ". Что я сделал не так и как это исправить?

7
задан Henrik Heimbuerger 5 March 2011 в 14:28
поделиться