Ошибка: getaddrinfo EAI_AGAIN api.spotify.com:443 - PullRequest
0 голосов
/ 02 ноября 2018

Пока я в процессе интеграции 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

В моем случае вышеприведенное решение сработало. Надеюсь, эта статья поможет другим!

...