我想为Last.fm API创建python客户端。我想建立一种图书馆。
我设法通过获取会话密钥来获取和设置会话。之后,我尝试调用需要API_key,api_signature和会话密钥的POST方法。所以我使用我拥有的APi密钥,我用来获取会话密钥和会话密钥本身的api_signature。
但即使我为POST调用使用相同的api_signature,我也会得到“无效的方法签名”。
{{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.