Google Reader身份验证问题

时间:2010-06-23 08:33:23

标签: authentication google-reader

谷歌阅读器API似乎期待今天认证的不同之处!

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

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

PS我可以使用HTTPS进行身份验证,谷歌会向我返回三个令牌(SID,LSID,AUTH)。但我无处猜测HSID是什么。

6 个答案:

答案 0 :(得分:10)

我做到了。 是的,sfa提供的link是对的。但这种格式太混乱了。 我就是这样做的。

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

    HttpGet方法=新的HttpGet(CommandUrl + QueryString); method.addHeader(“授权”,“GoogleLogin auth =”+ Auth);

  5. 这很有效。感谢sfa的链接。

答案 1 :(得分:3)

您必须将授权GoogleLogin auth = xxx添加到标头中。以下是message

的引用
  

以下是如何制作的快速摘要   此更改:对于那些区域的应用程序   已经从中获取身份验证   https://www.google.com/accounts/ClientLogin   你应该回来作为你的一部分   响应Auth =值。每一个   请求您发送给读者   将该值作为HTTP标头提供   事情会照常发挥作用。该   标题格式是:   授权:GoogleLogin auth = [value   从ClientLogin获得]

认为它有效!我得到了同样的错误,已经解决了这个问题。 See it here

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

我看到所有谷歌阅读器api操作都使用hsid。

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

答案 5 :(得分:0)

xandy描述的4个步骤正在运行,谢谢。

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