Я использую стратегию spotify с паспортом Js для аутентификации.Затем я хочу использовать библиотеку оболочки spotify-web-api-node для вызовов для сортировки данных.Однако использование маркеров доступа и обновления, полученных при аутентификации для последующих вызовов, не работает.Я получаю 401 - несанкционированный при попытке сделать вызов для спойтизации для пользовательских данных.
Я попытался создать экземпляр SpotifyWebApiObject с токеном обновления и токеном доступа.Хотя я вижу в библиотеке, для выполнения звонков нужен только токен доступа.Я попытался войти и выйти, чтобы получить новые наборы токенов.
passport.use(new SpotifyStrategy({
clientID: keys.spotifyClientID,
clientSecret: keys.spotifyClientSecret,
callbackURL: '/auth/spotify/callback',
proxy: true
}, async (accessToken, refreshToken, profile, done) => {
const spotifyId = profile.id;
const name = profile.displayName;
const email = profile.emails[0].value;
console.log(profile.id)
const existingUser = await User.findOne({ spotifyId: profile.id });
if (existingUser) {
let userCredentials = await UserCredential.findOne({ userId: spotifyId });
if (!userCredentials) {
return await new UserCredential({ userId: spotifyId, name, accessToken, refreshToken }).save();
}
console.log('always get existing user')
userCredentials.accessToken = accessToken;
userCredentials.refreshToken = refreshToken;
return done(null, existingUser);
}
const user = await new User({ spotifyId }).save();
await new UserCredential({ userId: spotifyId, name, accessToken, refreshToken }).save();
done(null, user);
}));
Как только они сохраняются в БД.Я ищу пользователя и использую соответствующие маркеры доступа и обновления.
const getPlaylists = async (user) => {
let spotifyData = await initiateSpotifyWebApi(user);
spotifyData.getUserPlaylists(user.spotifyId).then((res) => {
console.log('response is ===', res)
}).catch((err) => console.error(err));
}
async function initiateSpotifyWebApi(user) {
const creds = await UserCredential.findOne({ userId: user.spotifyId });
const apiCaller = setUpApiObj(creds.refreshToken, creds.accessToken);
return apiCaller
}
function setUpApiObj(refreshTok, accessTok) {
const spotifyApi = new SpotifyWebApi({
accessToken: accessTok,
refreshToken: refreshTok
});
return spotifyApi;
}
getUserPlaylist()
возвращает ошибку
{ [WebapiError: Unauthorized] name: 'WebapiError', message: 'Unauthorized', statusCode: 401 }
Любая идея, почему я не могу получить доступ к API с помощьюэта библиотека, как я пытаюсь?
спасибо