302 статус при копировании данных в другое приложение в AppEngine - PullRequest
1 голос
/ 19 марта 2012

Я пытаюсь использовать функцию «Копировать в другое приложение» в AppEngine и получаю сообщение об ошибке:

Fetch to http://datastore-admin.moo.appspot.com/_ah/remote_api failed with status 302

Это для приложения Java, но я следовал инструкциям при настройке среды выполнения Python по умолчанию.

Я на 95% уверен, что это проблема аутентификации, и вызов remote_api перенаправляет на страницу входа в Google. Оба приложения используют Google Apps в качестве механизма аутентификации. Я также пытался копировать в третье приложение, которое используется для аутентификации в учетных записях Google.

Примечания:

  • Учетная запись пользователя, с которой я вхожу, является владельцем всех трех приложений. Это аккаунт Google Apps (если это не было очевидно).
  • У меня есть учетная запись Gmail, которая также является владельцем всех трех приложений. Когда я захожу в консоль администратора с ее помощью, я вообще не вижу консоль администратора хранилища данных, когда нажимаю на нее.
  • Я могу нормально использовать remote_api из командной строки после ввода своих данных
  • Пробовал как со встроенным в Python remote_api, так и с Java.

Я нашел похожие вопросы / сообщения в блоге по этому поводу, один из которых требовал входа в систему из браузера и последующей отправки файла cookie ACSID, который вы получили после того, как это было сделано. Я не могу сделать это здесь, очевидно.

1 Ответ

2 голосов
/ 31 мая 2012

ОК, я думаю, у меня все получилось.

Я буду ссылаться на два идентификатора приложения как «source» и «dest».

Чтобы включить администратора хранилища данных (как вы знаете), вам необходимо загрузить проект Python с файлами app.yaml и appengine_config.py, как описано в документации.

Либо я неправильно прочитал документы, либо произошла ошибка. «AppID» в .yaml должен быть идентификатором приложения, в которое вы загружаете, чтобы включить DS admin.

Другой appID в файле appengine_config, а именно эта строка: remoteapi_CUSTOM_ENVIRONMENT_AUTHENTICATION = ( 'HTTP_X_APPENGINE_INBOUND_APPID', ['appID'])

Должен быть appID «источника», идентифицируйте идентификатор приложения, откуда поступают данные в операции копирования DS.

Я думаю, что эта строка позволяет аутентифицировать исходный appID как имеющий права на запись в идентификатор приложения "dest".

Итак, я изменил этот .py, снова загрузив его в свой идентификатор приложения "dest". Чтобы быть уверенным, я сделал это фиктивное приложение Python по умолчанию и оставил его так.

Затем на исходном идентификаторе приложения я снова попытался скопировать DS, и все задания копирования были сброшены ОК, так что, похоже, это исправлено.

...