2011-08-13 35 views
3

我正在玩Google音樂。我正在嘗試查看是否可以編寫將我的音樂文件上傳到Google音樂的應用。到目前爲止,我已經設法使用ClientLogin驗證自己並訪問music.google.com頁面。但是,無論何時我嘗試訪問http://music.google.com/music/services/loadalltracks,包含JSON格式的所有曲目的頁面,我都會收到401:未經授權的錯誤。但是,如果我傳遞包含SID和HSID的Cookie,它就可以工作,並且可以訪問該頁面。Google ClientLogin授權和Google音樂

有誰知道爲什麼它不能與ClientLogin一起使用,Google之外不支持Music?您是否有與其他Google服務相似的經歷?如果我無法使ClientLogin正常工作,那麼是否有解決方法,使用SID?我不知道如何生成HSID。

+0

我在PHP中爲Google日曆寫了一個類。爲了驗證,我還使用了ClientLogin。但要訪問該服務,我只需要「Auth」授權cookie。需要將令牌添加到標題才能訪問該服務。 也許這有助於: http://code.google.com/intl/nl/apis/accounts/docs/AuthForInstalledApps.html – maartencls

+0

是的,我就是這麼做的。它適用於讓我進入主音樂頁面,但不適用於頁面請求曲目。 –

回答

3

嗯,據我可以告訴發送SID和HSID cookies的原因使請求工作是因爲你模擬普通用戶訪問服務的方式。 你不能去正規的應用程序的方式,因爲這是不支持谷歌音樂(據我的互聯網研究顯示,沒有谷歌音樂的API)。

哦,有一件事:谷歌不鼓勵人們使用ClientLogin,而是告訴人們使用OAuth(「ClientLogin [是]谷歌專有的授權API ......你應該避免使用[this]服務。」發現於http://code.google.com/apis/gdata/docs/auth/overview.html)所以在將來你可能會想要使用它。也許它會在這種情況下工作(它從ClientLogin發送一個不同的令牌 - OAuth令牌而不是Auth令牌),但我懷疑這一點。

無論如何,我希望這個清除了事情。

+0

是的,它看起來沒有可用於Google音樂的有效範圍。我想我必須等待,並希望他們發佈一個API。 –

9

由於Google音樂沒有官方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標記。