【问题标题】:Not able to access google spreadsheet from app engine: "Moved Temporarily"?无法从应用引擎访问谷歌电子表格:“暂时移动”?
【发布时间】:2009-10-29 19:40:23
【问题描述】:

几天前,我能够访问我的谷歌电子表格 来自应用程序(在应用程序引擎中),但今天它已损坏。

也就是说,我可以

name= "name of my spreadsheet"
self.client = gdata.spreadsheet.text_db.DatabaseClient()
self.client.GetDatabases(name=name)

它奏效了。事实上,当我使用 dev_appserver

但是,如果在应用引擎上崩溃。它说它无法解析 XML。

我在 gdata 代码中添加了一些打印结果,发现它不能 解析它,因为它认为的 XML 实际上只是 登录页面。

现在发生的事情是 python gdata 库做了一个 ('eleanor' 是电子表格名称)

GET /feeds/documents/private/full?title=eleanor

然后回来

<HTML>
<HEAD>
<TITLE>Moved Temporarily</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Moved Temporarily</H1>
The document has moved <A HREF="https://www.google.com/accounts/
ServiceLogin?
service=writely&amp;passive=true&amp;nui=1&amp;continue=http%3A%2F
%2Fdocs.google.com%2Ffeeds%2Fdocuments%2Fprivate%2Ffull%3Ftitle
%3Deleanor&amp;followup=http%3A%2F%2Fdocs.google.com%2Ffeeds
%2Fdocuments%2Fprivate%2Ffull%3Ftitle%3Deleanor">here</A>.
</BODY>
</HTML>

但是,当在 dev_appserver.py 上本地运行时,相同的 GET 返回正确的 XML:

<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/
2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'
xmlns:docs='http://schemas.google.com/docs/2007' xmlns:batch='http://
schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/
2005'><id>http://docs.google.com/feeds/documents/private/full</
id><updated>2009-10-29T19:14:07.401Z</updated><category scheme=......

我仔细检查过,是的,我的应用已获得访问 Google 的授权 文档。

那么,“暂时搬家”是怎么回事。这是 googleplex 的暂时性问题,还是一些身份验证问题?

【问题讨论】:

    标签: python google-app-engine


    【解决方案1】:

    Docs 会将您重定向到登录页面。在尝试获取电子表格之前,您需要进行身份验证。不过,我不确定为什么它不需要您在开发服务器上进行身份验证。

    【讨论】:

    • 谢谢,但是,是的。我做了整个身份验证:授权、获取令牌、更新令牌。我仔细检查了我的 google 帐户,确实,我的应用程序具有“Google Docs”访问权限(您可以在您的 google 帐户上检查这些)。这一切都在几天前工作,然后谷歌改变了一些破坏身份验证的东西(如果这是问题的话)。我尝试了显而易见的方法:撤销访问权限,然后重新授予它,但不行。是否有 Google 应用引擎员工阅读此网站?
    • 不过,对于未经授权的请求,他们会返回“临时移动”,这似乎很奇怪。如果我真的没有被授权,那么他们返回 401“需要授权”或至少返回 404 会更有意义,你不觉得吗?
    • 这是面向用户请求的常用方法:身份验证由另一个服务处理,因此站点必须返回 302 才能将用户的浏览器发送到身份验证页面。不过,我不确定它为什么会在 API URL 上这样做。
    • 我是 Google App Engine 员工 - 但这是 GData 或 Docs 问题。 :)
    【解决方案2】:

    您可能必须不受限制地访问电子表格。您没有共享它,因此每个人都可以查看它。
    可以阅读分享here

    忍者编辑:
    我没有意识到您可以直接从 app-engine 访问电子表格。谷歌还有一些关于如何使用谷歌电子表格over here 进行身份验证的信息。你检查过你本地环境的版本吗?也许这是您的开发环境尚未掌握的新事物?

    【讨论】:

    • 是的,这是我大约两个月前用来设置我的应用程序的链接,直到两天前谷歌做了一些坏事(我没有改变我的软件中的任何东西),它一直运行良好它。
    • 我的意思是“使用 Google App Engine 检索经过验证的 Google 数据馈送”教程的链接。这是我用的那个。
    【解决方案3】:

    http://blog.forret.com/2011/07/google-docs-infamous-moved-temporarily-error-fixed/上查看我的回答

    如果您在链接中添加“&ndplr=1”,Google 将不会尝试重定向以进行身份​​验证。

    【讨论】:

      【解决方案4】:

      好的,现在可以了。 Google 已经自愈了。

      需要明确的是,我没有更改代码中的任何内容,问题就消失了。这一定是 Google 出现的暂时性错误。

      我希望这类错误非常少见,因为它们会影响我的整个网络应用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多