2

我正在 Android 上开发音乐播放器。

我想使用 LastFM API。

问题是当我想使用 LastFM 的方法时。

我注册了,我有一个 api-key。如果我想使用 Artist.getSimilar 方法非常简单。例如,如果我想使用此方法搜索与“Cher”相似的艺术家,则 url 为:

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 个第一个参数,但我无法获得 api_sig 和 sk。

我阅读了这份文件:http ://www.lastfm.es/api/authentication

通过首先按参数名称的字母顺序对调用中发送的所有参数进行排序,然后使用方案将它们连接成一个字符串,从而构建您的 api 方法签名。因此,对于 auth.getMobileSession 的调用,您可能有:

api_keyxxxxxxxxxauthTokenxxxxxxxmethodauth.getMobileSession

确保您的参数是 utf8 编码的。现在将您的秘密附加到此字符串。最后,生成结果字符串的 md5 哈希。例如,对于密码等于“mysecret”的帐户,您的 api 签名将是:

api signature = md5("api_keyxxxxxxxxauthTokenxxxxxxxmethodauth.getMobileSessionmysecret") 其中 md5() 是一个 md5 散列操作,它的参数是要散列的字符串。散列操作应返回 32 个字符的十六进制 md5 散列。

但我什么都不懂。首先我必须获得api_sig,然后获得会话密钥,但我不知道怎么做,使用哪些类以及什么......

任何想法???谢谢!!!

4

2 回答 2

3

为什么要重新发明轮子:http://code.google.com/p/lastfm-java/ 上有一个 last.fm API,您可以在http://code.google.com/看到他们如何创建签名p/lastfm-java/source/browse/trunk/src/de/umass/lastfm/Caller.java(在http://code.google.com/p/lastfm-private Result call(String method, String apiKey, Map<String, String> params, Session session)查找方法以查看他们如何调用该Authenticator.getSignature方法- java/source/browse/trunk/src/de/umass/lastfm/Authenticator.java)。

于 2011-05-23T16:15:12.473 回答
1

试试这个 API: https ://github.com/c99koder/lastfm-android/ 我在这里找到了。可能有用

于 2013-09-23T10:23:59.610 回答