【发布时间】:2019-07-18 07:31:07
【问题描述】:
我正在使用以下代码通过 Google Apps 脚本向 Spotify API 发出请求:
function search() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var artist = sheet.getRange(1,1).getValue();
artist = encodeURIComponent(artist.trim());
var result = searchSpotify(artist);
Logger.log(result);
}
function searchSpotify(artist) {
//searches spotify and returns artist ID
var response = UrlFetchApp.fetch("https://api.spotify.com/v1/search?q=" + artist + "&type=artist&limit=1",
{ method: "GET",
headers:{
"contentType": "application/json",
'Authorization': "Bearer BQBnpSUdaEweirImw23yh2DH8OGhTwh5a_VnY_fgb2BPML0KvFvYd04CaEdUhQN9N4ZUXMIVfJ1MjFe1_j0Gl0UoHDhcoC_dklluZyOkq8Bo6i2_wfxSbGzP3k5EUjUKuULAnmTwCdkdZQnl-SNU0Co"
},
});
json = response.getContentText();
var data = JSON.parse(json);
var uri = data.artists.items[0].uri.slice(15);
var getArtists = getRelatedArtists(uri);
Logger.log(getArtists);
return getArtists;
}
function getRelatedArtists(uri) {
//searches related artists with the returned ID
var response = UrlFetchApp.fetch("https://api.spotify.com/v1/artists/" + uri + "/related-artists",
{ method: "GET",
headers:{
"contentType": "application/json",
'Authorization': "Bearer BQBnpSUdaEweirImw23yh2DH8OGhTwh5a_VnY_fgb2BPML0KvFvYd04CaEdUhQN9N4ZUXMIVfJ1MjFe1_j0Gl0UoHDhcoC_dklluZyOkq8Bo6i2_wfxSbGzP3k5EUjUKuULAnmTwCdkdZQnl-SNU0Co"
},
});
json = response.getContentText();
var data = JSON.parse(json);
var listArtists = [];
for(var i = 0, len = data.artists.length; i < len; i++){
listArtists.push(data.artists[i].name);
}
return listArtists;
}
使用 Spotify 网站上的临时授权令牌可以正常工作,但此令牌每小时刷新一次,因此显然没用。
我正在尝试使用我在 Spotify 上设置的我自己的授权令牌和 ID,但是我正在努力完成这项工作。据我了解,我可能需要在开始时添加一个额外的步骤来启动授权过程,但我已经尝试了所有建议的方法,但仍然收到服务器错误。
【问题讨论】:
-
我认为提供API的规范文档会帮助用户思考你的问题。
-
对不起,完整的文档很长,所以我在这里链接了它。它描述了几个授权流程选项:developer.spotify.com/documentation/general/guides/…
-
我还应该补充一点,我正在尝试使用底部的客户端凭据流。
-
感谢您的回复。您已经拥有了 client_id 和 client_secret。并且您想使用“客户端凭据流”检索访问令牌。您想了解“客户端凭据流”的 Google Apps 脚本。我的理解正确吗?
-
没错。每当我尝试连接时,都会收到一条错误消息,指出 grant_type 参数无效。
标签: google-apps-script google-sheets spotify