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提供的链接是对的。但是格式有点太混乱了。
这是我的做法。
一个。 SID
湾。 LSID
C。认证
在每个请求中,在标头中添加以下内容:
标题名称:授权
值: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 当你第一次登录时使用 我看到所有 google reader api 操作都使用 hsid。 我使用firebug可以在响应的setCookie字段中看到hsid
https://www.google.com/accounts/ServiceLoginAuth
.你会得到hsid!