我正在尝试使用AppEngine的"复制到另一个应用程序"功能,但不断收到错误:
Fetch to http://datastore-admin.moo.appspot.com/_ah/remote_api failed with status 302
这是针对Java应用程序的,但我遵循了设置默认Python运行时的说明。
我有95%的把握这是一个身份验证问题,对remote_api的调用正在重定向到谷歌登录页面。这两款应用程序都使用谷歌应用程序作为身份验证机制。我还尝试过复制到我们的第三个应用程序,该应用程序使用谷歌帐户进行身份验证。
注:
- 我登录的用户帐户是所有三个应用程序的所有者。这是一个谷歌应用程序帐户(如果不明显的话)
- 我有一个gmail帐户,这也是所有三个应用程序的所有者。当我使用它登录到管理控制台时,当我单击它时,我根本看不到数据存储管理控制台
- 输入详细信息后,我可以从命令行使用remote_api
- 尝试使用内置的Python remote_api和Java
我发现了类似的问题/博客文章,其中一篇需要从浏览器登录,然后手动提交完成后获得的ACSID cookie。很明显,在这里不能那样做。
好吧,我想我已经搞定了。
我将这两个appID称为"source"one_answers"dest"。
要启用数据存储管理(正如您所知),您需要上传一个带有app.yaml和appengine_config.py文件的Python项目,如文档中所述。
要么是我看错了文件,要么是有错误。yaml中的"appID"应该是您要上传到的应用程序ID,以启用DS管理。
appengine_config文件中的另一个appID,特别是这一行:remoteapi_CUSTOM_ENVIRONMENT_AUTHENTICATION=('HTTP_X_APPENGINE_INBOUND_APPID',['APPID'])
应该是"源"的appID,ID是DS复制操作中数据来源的应用程序ID。
我认为这一行允许源appID被验证为具有写入"dest"应用ID的权限。
所以,我更改了.py,再次上传到我的"dest"应用程序ID。为了确保我将这个伪python应用程序设为默认应用程序,并保持原样。
然后在源应用程序ID上,我再次尝试了DS复制,所有的复制作业都正常启动了,所以它似乎已经修复了它。