1

我正在尝试使用 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 之一。

我发现了类似的问题/博客文章,其中一个需要从浏览器登录,然后手动提交完成后获得的 ACSID cookie。显然,这里不能这样做。

4

1 回答 1

2

好的,我想我得到了这个工作。

我将这两个 appID 称为“源”和“目标”。

要启用数据存储区管理员(如您所知),您需要按照文档中的说明上传包含 app.yaml 和 appengine_config.py 文件的 Python 项目。

要么我误读了文档,要么有错误。.yaml 中的“appID”应该是您上传到以启用 DS 管理员的应用 ID。

appengine_config 文件中的另一个 appID,特别是这一行:remoteapi_CUSTOM_ENVIRONMENT_AUTHENTICATION = ('HTTP_X_APPENGINE_INBOUND_APPID', ['appID'])

应该是“源”的appID,ID是DS复制操作中数据来自哪里的app id。

我认为这一行允许源 appID 被验证为有权写入“dest”应用程序 ID。

所以,我更改了那个 .py,再次上传到我的“dest”应用 ID。可以肯定的是,我将这个虚拟 python 应用程序设置为默认设置并保持原样。

然后在源应用程序 ID 上,我再次尝试了 DS 复制,并且所有复制工作都正常启动了 - 所以它似乎已经修复了它。

于 2012-05-31T14:00:49.253 回答