Я должен подписать мой lastfm api:
- Подписывай свои звонки
Создайте свои сигнатуры методов API, сначала упорядочив все параметры, отправленные в вашем вызове, в алфавитном порядке по имени параметра и объединяя их в одну строку, используя схему. Так что для вызова auth.getSession у вас может быть:
api_keyxxxxxxxxmethodauth.getSessiontokenxxxxxxx
Убедитесь, что ваши параметры в кодировке utf8. Теперь добавьте свой секрет к этой строке. Наконец, сгенерируйте хеш md5 из полученной строки. Например, для учетной записи с секретом, равным «mysecret», ваша подпись API будет:
api signature = md5 ("api_keyxxxxxxxxmethodauth.getSessiontokenxxxxxxxmysecret")
Где md5 () - операция хеширования md5, а ее аргумент - строка, которую нужно хэшировать. Операция хэширования должна вернуть 32-символьный шестнадцатеричный хэш md5.
var myAPI_key="b6720a4ef50c0a1f63419e334fbf9c74";
var myshared_secret="5df5d9e40e9375f043edf1e1fb629236";
var url = window.location.href; // or window.location.href for current url
var captured = /token=([^&]+)/.exec(url)[1]; // Value is in [1] ('384' in our case)
var result = captured ? captured : 'myDefaultValue';
console.log(captured);
function calculateApiSignature(){
String.prototype.hashCode = function(){
var hash = 0;
if (this.length == 0) return hash;
for (i = 0; i < this.length; i++) {
char = this.charCodeAt(i);
hash = ((hash<<5)-hash)+char;
hash = hash & hash; // Convert to 32bit integer
}
return hash;
};
var string = "api_key" + "b6720a4ef50c0a1f63419e334fbf9c74"+ "methodauth.getSessiontoken"+captured;
var textoUtf8 = encodeURI(string);
textoUtf8 = textoUtf8 + myshared_secret;
console.log("String a firmar : " + textoUtf8);
var ApiSignature = textoUtf8.hashCode();
console.log("Api Signature" + ApiSignature);
}
<!DOCTYPE html>
<html>
<head>
<title>Menu principal Last FM</title>
<meta charset="utf-8">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- <script type="text/javascript" src="./js/constants.js"></script>-->
<script type="text/javascript" src="./js/main.js"></script>
</head>
<body>
<h1>Im login to</h1>
<div id="userData">
<!--<img src="https://lastfm-img2.akamaized.net/i/u/34s/cc637716959b4acecaa1a307e300f61f.png" />-->
</div>
<div id="success">
<div id="artistName"></div>
<div id="artistImage"></div>
<div id="artistBio"></div>
</div>
<div id="error"></div>
<button type="button" onclick="loadUserInfoXMLDoc()">Get User information</button>
<br><br>
<button type="button" onclick="loadChartTopArtistsJSONDoc()">Get Top Artist Chart</button>
<button type="button" onclick="calculateApiSignature()">Calculate API</button>
<table id="demo"></table>
<p id="artist"></p>
</body>
</html>
Не знаю, что я пропускаю или делаю неправильно ....
Я думаю, что я следую инструкциям, чтобы получить api_signature ....
Тогда, когда у меня есть подпись api_signature, я думаю, что id должен позвонить:
$.ajax({
type : 'GET',
url : 'http://ws.audioscrobbler.com/2.0/?',
data : 'api_key=b6720a4ef50c0a1f63419e334fbf9c74&' +
'token:xxxx&'+
'api_sig:apisig from above',
dataType : 'json',
success : function(data) {
//hooray
},
error : function(code, message){
//upset
}
});