Пока я в процессе интеграции Spotify API
в Google Assistant
приложение, внедряю Account Linking
,
getaddrinfo EAI_AGAIN api.spotify.com:443
Эта ошибка постоянно появлялась в консоли, хотя, похоже, она работает, как будто в реализации API нет ничего плохого. Токен доступа правильно создан и получен, а клиентские и секретные идентификаторы были заполнены без каких-либо опечаток. Кроме того, я протестировал вызовы API на Spotify Console
(https://developer.spotify.com/console/get-artist-albums/).. Ошибка не обнаружена. Он получил ожидаемые данные с сервера Spotify, поэтому он не должен быть связан с Account Linking
и Spotify Server
. Созданный код сам ниже: я предполагаю, что что-то не так с spotify-web-api-node
, node
, npm
или firebase-functions
??. Недавно я выполнил версионирование узлов, поэтому мог сделать что-то не так.
- Версия узла: v7.9.0
- spotify-web-api-node: ^ 4.0.0
- firebase-функции: ^ 2.0.3
- npm версия: 6.4.1
- Добавлены движки: {"node": "8"} // это в package.json для использования asyn и await
app.intent(SomeIntent, async (conv, params) => {
console.log('user info', JSON.stringify(conv.user));
conv.ask('lets play'); //okay
const access_token = conv.user.access.token || ''; // okay
console.log('Your TOKEN information here: ' + access_token); // okay
spotifyApi.setAccessToken(access_token); // should be set correctly
let data = await findMusic(); // error in the findMusic func
conv.ask('found this song。', data.name); // so no data.name
});
function findMusic() {
return spotifyApi.getArtistAlbums('43ZHCT0cAZBISjO8DG9PnE').then((data) => {
console.log('artist song', data.body);
return data.body; //this does not return because error is produced
}).catch(err => {
console.log('Something went wrong!', err);
return err; // this error is WebapiError: getaddrinfo EAI_AGAIN api.spotify.com:443
});
}
UPDATE
@ Ник-Фелкер упомянул в комментарии ниже, что внешние звонки разрешены только через платные планы. Так что это может быть решением (пока не доказано, что оно работает, потому что я не использую платный план. Подробное объяснение ниже цитируется из Ответный комментарий из другого сообщения StackOverflow
План Spark разрешает исходящие сетевые запросы только к службам, принадлежащим Google. Входящие запросы на вызов разрешены в пределах квоты. В плане Blaze Cloud Functions предоставляет постоянный бесплатный уровень. Первые 2 000 000 вызовов, 400 000 ГБ-с, 200 000 ЦП-с и 5 ГБ выходного интернет-трафика предоставляются бесплатно каждый месяц. Вы платите только за использование после этого бесплатного выделения. Ценообразование основано на общем количестве вызовов и времени вычислений. Время вычислений является переменным в зависимости от объема памяти и ЦП, выделенных для функции. Ограничения использования также применяются в дневных и 100-квотных квотах. Для получения дополнительной информации см. Оценка облачных функций .
UPDATE
В моем случае вышеприведенное решение сработало. Надеюсь, эта статья поможет другим!