Android 上的 LastFM 请求
我正在 Android 上开发音乐播放器。
我想使用 LastFM API。
问题是当我想使用 LastFM 的方法时。
我注册了并且有一个 api 密钥。 如果我想使用Artist.getSimilar方法非常简单。 例如,如果我想使用此方法搜索与“Cher”类似的艺术家,则网址为:
通过参数传递艺术家和 api_key。
问题是我想使用 Artist.getTags 方法,
我必须传递强制 4 个参数:
- artist
- api_key
- api_sig
- sk
我有第 2 个参数,但我无法获取 api_sig 和 sk。
我读了这个文档: http://www.lastfm.es/api/authentication
首先对所有的方法进行排序来构造你的 API 方法签名 按参数名称的字母顺序在调用中发送的参数 使用一种方案将它们连接成一个字符串。所以 对于对 auth.getMobileSession 的调用,您可能有:
api_keyxxxxxxxxauthTokenxxxxxxxxmethodauth.getMobileSession
确保您的参数采用 utf8 编码。现在将您的秘密附加到 这个字符串。最后,生成结果字符串的 md5 哈希值。 例如,对于秘密等于“mysecret”的帐户,您的 API 签名将是:
api签名= md5("api_keyxxxxxxxxauthTokenxxxxxxxxmethodauth.getMobileSessionmysecret") 其中 md5() 是 md5 哈希运算,其参数是字符串 进行哈希处理。哈希运算应返回 32 个字符 十六进制 md5 哈希值。
但我什么也不明白。首先我必须获取 api_sig,然后获取会话密钥,但我不知道如何做到这一点,哪些类使用以及任何东西......
有什么想法吗???谢谢!!!
I'm developing a music player on Android.
I would like to use LastFM API.
The problem is when I want to use a method of LastFM.
I sign up and I have an api-key.
If I want to use the method Artist.getSimilar is very easy.
For example, if I want to search similar artist to 'Cher' using this method, the url is:
Passing by argument artist and api_key.
The problem is that I want to use the method Artist.getTags
I have to pass forced 4 arguments:
- artist
- api_key
- api_sig
- sk
I have the 2 first arguments, but I can't obtain the api_sig and sk.
I read this document: http://www.lastfm.es/api/authentication
Construct your api method signatures by first ordering all the
parameters sent in your call alphabetically by parameter name and
concatenating them into one string using a scheme. So
for a call to auth.getMobileSession you may have:api_keyxxxxxxxxauthTokenxxxxxxxmethodauth.getMobileSession
Ensure your parameters are utf8 encoded. Now append your secret to
this string. Finally, generate an md5 hash of the resulting string.
For example, for an account with a secret equal to 'mysecret', your
api signature will be:api signature =
md5("api_keyxxxxxxxxauthTokenxxxxxxxmethodauth.getMobileSessionmysecret")
Where md5() is an md5 hashing operation and its argument is the string
to be hashed. The hashing operation should return a 32-character
hexadecimal md5 hash.
But I don't understand anything. First I have to obtain the api_sig, and after obtain the session key, but I haven't idea how do it, which classes use and anything...
Any idea??? Thanks!!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
为什么要重新发明轮子:http://code.google.com 上有一个 last.fm API /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, Mapparams, Session session)
方法以查看它们如何调用Authenticator.getSignature< /code> 方法 http://code.google.com/p/lastfm-java/source/browse/trunk/src/de/umass/lastfm/Authenticator.java)。
Why reinvent the wheel: there is a last.fm API at http://code.google.com/p/lastfm-java/, and you can see how they create the signature at http://code.google.com/p/lastfm-java/source/browse/trunk/src/de/umass/lastfm/Caller.java (look for the
private Result call(String method, String apiKey, Map<String, String> params, Session session)
method to see how they call theAuthenticator.getSignature
method at http://code.google.com/p/lastfm-java/source/browse/trunk/src/de/umass/lastfm/Authenticator.java).试试这个API:
https://github.com/c99koder/lastfm-android/
我在这里找到了它。
可能有用
Try this API:
https://github.com/c99koder/lastfm-android/
I found it here.
It may be useful