Я пытаюсь выполнить вызов API Spotify с помощью пакета spotify-web-api-node.Чтобы выполнить определенные вызовы API, мне нужно установить свои учетные данные с помощью функции spotifyApi.clientCredentialsGrant()
.Но всякий раз, когда я вызываю эту функцию из тега script моего приложения Vue, это приводит к ошибке: Uncaught TypeError: spotifyApi.clientCredentialsGrant is not a function
.
Согласно эта проблема на Gitub-узле spotify-web-api-github предназначена именно для этого.Они не хотят, чтобы люди устанавливали учетные данные, используя Javascript, который предоставляется клиенту, и вместо этого запрос должен выполняться на стороне сервера.Таким образом, библиотека spotify-web-api-node предоставляет эту функцию только при использовании кода с узла.
Хотя это и объясняет, почему, я до сих пор не знаю, как решить проблему.Как мне запустить код с узла?Как я могу переместить его из открытого кода Javascript, чтобы у меня был доступ к функции clientCredentialsGrant
?Я не опытный разработчик Node или Javascript, поэтому, пожалуйста, объясните подробно.
Код ниже предназначен для компонента Vue, где я выполняю вызовы API Spotify.Uncaught TypeError
происходит от обещания spotifyApi.clientCredentialsGrant().then()
в начале тега <script>
.
<template>
<section>
<b-field>
<button class="button is-light is-outlined is-large" @click="open">
<p class="btn-txt">Calculate!</p>
</button>
</b-field>
<b-loading :is-full-page="true" :active.sync="isLoading" :can-cancel="true"></b-loading>
</section>
</template>
<script>
import SpotifyWebApi from "spotify-web-api-node";
var spotifyApi = new SpotifyWebApi({
clientId: "5fc39d2ee8144af88b66c4da4cf6a6a0",
clientSecret: "a0722cde44f844289035b12279e26f41"
});
// Retrieve an access token.
console.log("The client ID is " + spotifyApi.getClientId());
console.log("The client secret is " + spotifyApi.getClientSecret());
spotifyApi.clientCredentialsGrant().then(
function(data) {
console.log("The access token expires in " + data.body["expires_in"]);
console.log("The access token is " + data.body["access_token"]);
// Save the access token so that it's used in future calls
spotifyApi.setAccessToken(data.body["access_token"]);
},
function(err) {
console.log(
"Something went wrong when retrieving an access token",
err.message
);
}
);
// Get Elvis' albums
// Search tracks whose artist's name contains 'Kendrick Lamar', and track name contains 'Alright'
spotifyApi.searchTracks("track:Alright artist:Kendrick Lamar").then(
function(data) {
console.log(
'Search tracks by "Alright" in the track name and "Kendrick Lamar" in the artist name',
data.body
);
},
function(err) {
console.log("Something went wrong!", err);
}
);
export default {
data() {
return {
isFullPage: true
};
},
methods: {
open() {
const loadingComponent = this.$loading.open({
container: this.isFullPage ? null : this.$refs.element.$el
});
setTimeout(() => loadingComponent.close(), 3 * 1000);
}
}
};
</script>
Также, если это поможет, вот репозиторий Github для моего маленького веб-приложения Vue .Цель состоит в том, чтобы позволить пользователю ввести song
, artist
и time
в секундах, а затем отправить запрос поиска в веб-API Spotify, чтобы получить информацию о песне.Это даст мне длину песни, а затем я вычислю, сколько раз можно слушать эту песню в пределах указанного пользователем time
.
Мой ключевой вопрос : как запустить код со стороны сервера с Node.js?Я не знаю, как начать здесь.