Last.fm API无效方法签名,但在获取会话密钥时有效

时间:2017-08-17 22:28:31

标签: python rest web-services api session

我想为Last.fm API创建python客户端。我想建立一种图书馆。

我设法通过获取会话密钥来获取和设置会话。之后,我尝试调用需要API_key,api_signature和会话密钥的POST方法。所以我使用我拥有的APi密钥,我用来获取会话密钥和会话密钥本身的api_signature。

但即使我为POST调用使用相同的api_signature,我也会得到“无效的方法签名”。

{{1}}

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。问题是我使用了用于生成会话密钥的相同参数来进行POST调用。为Last.fm API签名方法的正确方法是从我们想要使用的POST方法构建api_sig。例如,要为api_sig生成track.love,我们使用以下参数:

 data = {"api_key": API_KEY,
                    "method": "track.love",
                    "track" : "yellow",
                    "artist" :"coldplay",
                    "sk" : SESSION_KEY
                    }
 keys = sorted(data.keys())
 param = [k+data[k] for k in keys]
 param = "".join(param) + SECRET
 api_sig = md5(param.encode()).hexdigest() # this api_sig used to sign track.love call.