2011-05-23 17 views
1

我正在開發Android上的音樂播放器。Android上的LastFM請求

我想使用LastFM API。

問題是當我想使用LastFM的方法。

我註冊,我有一個api鍵。 如果我想使用Artist.getSimilar方法很容易。 例如,如果我想類似的藝術家尋找到「雪兒」使用此方法,網址是:

http://ws.audioscrobbler.com/2.0/?method=artist.getsimilar&artist=cher&api_key=b25b959554ed76058ac220b7b2e0a026

傳遞通過爭論藝術家和API_KEY。

的問題是,我想使用的方法Artist.getTags

我必須要通過強迫4個參數:

  • 藝術家
  • API_KEY
  • api_sig
  • SK

我有2個第一個參數uments,但我無法獲得api_sig和sk。

我閱讀本文件:http://www.lastfm.es/api/authentication

首先通過排序參數名稱和 使用方案連接起來將合併爲一個字符串在您的呼叫發送字母順序所有 參數構建你的API方法簽名。所以 用於向auth.getMobileSession呼叫你可能有:

api_keyxxxxxxxxauthTokenxxxxxxxmethodauth.getMobileSession

確保您的參數是UTF8編碼。現在追加你的祕密到 這個字符串。最後,生成結果字符串的md5散列。 例如,對於一個祕密等於 'mysecret',一個賬戶你 API簽名是:

API簽名= MD5( 「api_keyxxxxxxxxauthTokenxxxxxxxmethodauth.getMobileSessionmysecret」) 凡MD5()是一個MD5哈希操作它的參數是要被散列的字符串 。散列操作應返回32個字符的 十六進制md5散列。

但我什麼都不懂。首先,我必須獲得api_sig,並獲得會話密鑰後,但我不知道它是如何做的,哪些類使用和什麼...

任何想法?謝謝!!!

回答

3

爲什麼重新發明輪子:有一個last.fm API在http://code.google.com/p/lastfm-java/,你可以看到他們是如何創建的http://code.google.com/p/lastfm-java/source/browse/trunk/src/de/umass/lastfm/Caller.java簽名(查找private Result call(String method, String apiKey, Map<String, String> params, Session session)方法,看看他們是如何調用Authenticator.getSignature方法在http://code.google.com/p/lastfm-java/source/browse/trunk/src/de/umass/lastfm/Authenticator.java)。

+0

謝謝!我很困惑,正確的功能是getTopTags ... – Josue 2011-06-01 11:42:17