谷歌阅读器API似乎期待今天认证的不同之处!
大约一周前,我下载了this,一切正常,我尝试将其移植到java。对于我的代码,它完美地工作(在你的例子的帮助下)直到今天。我堆栈跟踪所有内容,我发现谷歌阅读器突然不接受只有SID作为cookie。当然,我也测试运行您的示例应用程序,但它也不能正常运行。
然后我去篡改了谷歌阅读器的数据,我删除了除SID之外的每个cookie条目,它不起作用(好吧它给401,就像我的应用程序和你的样本);我再次测试,我发现它现在需要另一个名为HSID的cookie条目,与SID(超过100个字长)相比,它大约是10-20个单词。任何人都知道我们可以从哪里获得额外的HSID?
PS我可以使用HTTPS进行身份验证,谷歌会向我返回三个令牌(SID,LSID,AUTH)。但我无处猜测HSID是什么。
答案 0 :(得分:10)
我做到了。 是的,sfa提供的link是对的。但这种格式太混乱了。 我就是这样做的。
在每个请求中,在标题中添加以下内容: headername:授权 值:GoogleLogin auth = {Auth string} 例如(在java中)
HttpGet方法=新的HttpGet(CommandUrl + QueryString); method.addHeader(“授权”,“GoogleLogin auth =”+ Auth);
这很有效。感谢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