我正在将 Spotify API
集成到 Google Assistant
应用程序中,并实现 Account Linking
,但是在控制台中一直出现以下错误:
getaddrinfo EAI_AGAIN api.spotify.com:443
尽管似乎API的实现没有任何问题,但上述错误仍然不断出现。访问令牌已经正确地创建并接收,客户端和秘密ID也没有任何错别字。此外,我在 Spotify Console
上进行了API调用测试 (https://developer.spotify.com/console/get-artist-albums/),并没有发现任何错误。它从Spotify服务器获取了预期的数据,因此应该与 Account Linking
和 Spotify Server
无关。我自己创建的代码如下:我认为问题可能出在 spotify-web-api-node
、node
、npm
或 firebase-functions
上??最近我做了节点版本控制,所以可能做错了什么。
- Node 版本:v7.9.0
- spotify-web-api-node:^4.0.0
- firebase-functions:^2.0.3
- npm 版本:6.4.1
- 已添加引擎:{"node": "8"} // 这在 package.json 中用于使用异步和等待
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
});
}
更新
@Nick-Felker在下面的评论中提到,只有付费计划才允许外部调用。因此,这可能是解决方案(目前尚未证明是否有效,因为我没有使用付费计划。下面的详细说明摘自另一篇StackOverflow帖子中的回答评论)
Spark计划仅允许向Google拥有的服务发出出站网络请求。入站调用请求在配额范围内允许。在Blaze计划中,Cloud Functions提供了一个永久的免费层。每个月免费提供前200万次调用、400,000 GB-sec、200,000 CPU-sec和5 GB的Internet出口流量。超过这个免费配额的使用将被收费。定价基于总调用次数和计算时间。计算时间根据为函数分配的内存和CPU数量而变化。使用限制也通过每日和100s限额进行执行。有关更多信息,请参见Cloud Functions价格。
更新
在我的情况下,上述解决方案奏效。希望本文能对其他人有所帮助!
EAI_AGAIN
是一个 DNS 查询错误!更多细节可以在 https://dev59.com/F1kS5IYBdhLWcg3wN0TA#40182520 找到。 - riyaz-ali