谷歌阅读器认证问题

Google Reader Authentication problem

Google Reader API 似乎期待今天的身份验证有所不同!

大约一周前,我下载了这个,一切正常,我尝试将它移植到 java。对于我的代码,直到今天它都可以正常工作(在您的示例的帮助下)。我堆栈跟踪所有内容,我发现突然谷歌阅读器不接受仅 SID 作为 cookie。当然,我也测试运行了您的示例应用程序,但它不能正常工作。

然后我去篡改谷歌阅读器的数据,我删除了除 SID 之外的所有 cookie 条目,但它不起作用(它给出了 401,就像我的应用程序和你的示例一样);我再次测试,发现它现在需要另一个名为 HSID 的 cookie 条目,与 SID(超过 100 个字长)相比,它大约是 10-20 个字。有谁知道我们在哪里可以获得额外的 HSID?

PS 我可以使用 HTTPS 进行身份验证,而 google 正在向我返回三个令牌(SID、LSID、AUTH)。但我无处可猜 HSID 是什么。


我做到了。
是的,sfa提供的链接是对的。但是格式有点太混乱了。
这是我的做法。

  • 使用登录凭据发布到 https://www.google.com/accounts/ClientLogin。
  • 作为回报,如果正确登录,将传递三个令牌:
    一个。 SID
    湾。 LSID
    C。认证
  • 将 Auth 保存在应用程序的某处。忘记 SID 和 LSID(我想他们以后可能会删除它们)
  • 在每个请求中,在标头中添加以下内容:
    标题名称:授权
    值:GoogleLogin auth={Auth 字符串}
    例如(在 java 中)

    HttpGet 方法 = new HttpGet(CommandUrl QueryString);
    method.addHeader("Authorization", "GoogleLogin auth=" Auth);

  • 这行得通。感谢 sfa 的链接。


    您必须将 Authorization GoogleLogin auth=xxx 添加到您的标题中。这是消息中的引用:

    Here is a quick summary of how to make
    this change: For those apps that area
    already obtaining authentication from
    https://www.google.com/accounts/ClientLogin
    you should get back as part of your
    response an Auth= value. For every
    request you send to Reader you should
    provide that value as a HTTP header
    and things will work as usual. The
    header format is:
    Authorization:GoogleLogin auth=[value
    obtained from ClientLogin]

    确认它有效!我得到了同样的错误并且已经解决了这个问题。看这里。


    或者考虑使用此处提供的 ReaderTemplate 类:http://github.com/wspringer/greader-java/。它基本上隐藏了在适当的标题和(重新)身份验证中编织的复杂性。


    有关详细信息,请参阅 http://code.google.com/p/google-reader-api/wiki/Authentication,但简而言之,仅支持 ClientLogin 和 OAuth。请不要继续模拟浏览器流程(使用 SID 和 HSID cookie),这是不受支持的并且可能随时中断。


    xandy 描述的 4 个步骤有效,谢谢。

    这是我在 .NET 中执行 xandy\\ 的步骤:http://sandrinodimattia.net/blog/post/Consuming-Google-(Reader)-with-NET-Part-1-Authentication.aspx


    当你第一次登录时使用
    https://www.google.com/accounts/ServiceLoginAuth
    .你会得到hsid!

    我看到所有 google reader api 操作都使用 hsid。

    我使用firebug可以在响应的setCookie字段中看到hsid