Google ClientLogin授权和Google音乐

时间:2011-08-13 08:16:53

标签: c# web-services login httpwebrequest

我正在玩Google音乐。我正试图看看我是否可以编写一个应用程序,将我上传的音乐文件流式传输到Google音乐。到目前为止,我已设法使用ClientLogin对自己进行身份验证并访问music.google.com页面。但是,每当我尝试访问包含JSON格式的所有曲目的http://music.google.com/music/services/loadalltracks页面时,我都会收到401:Unauthorized错误。但是,如果我传递包含SID和HSID的cookie,它就可以工作,我可以访问该页面。

有没有人知道为什么它不能与ClientLogin一起使用,除了Google不支持Music?您是否有与其他Google服务类似的经历?如果我无法使ClientLogin工作,无论如何使用SID解决它?我不知道如何生成HSID。

2 个答案:

答案 0 :(得分:9)

由于Google Music没有官方API,因此您需要完整的SSO凭据才能使用这些端点。最简单的方法是模拟浏览器(例如机械化)。

我的unofficial Google Music api完成此操作的方式稍微清晰一点,但更多工作:使用clientlogin对Music Manager服务进行身份验证,然后使用tokenauth升级这些凭据。这不是真正的公共功能,但由第三方here和Google设计文档here描述。您需要的特定端点位于我的代码here中(在clientlogin.py和tokenauth.py中)。

您还希望在查询字符串中发送u=0xt=[value of xt cookie]。第一个参数指定您正在使用的帐户(如果您签署了多个帐户),第二个参数是xsrf令牌。

答案 1 :(得分:3)

好吧,据我所知,发送SID和HSID cookie的原因使得请求工作是因为您正在模拟普通用户访问服务的方式。 你不能采用常规的应用方式,因为谷歌音乐不支持(就我的网络研究显示,没有谷歌音乐的API)。

哦,还有一件事:谷歌不鼓励人们使用ClientLogin而是告诉人们使用OAuth(“ClientLogin [是] Google的专有授权API ......你应该避免使用[this]服务。”{{3}所以将来你可能想要使用它。也许它甚至可以在这种情况下工作(它从ClientLogin发送不同的令牌 - OAuth令牌而不是Auth令牌)虽然我对此表示怀疑。

无论如何,我希望这可以解决问题。