Google apps script 通过谷歌应用程序脚本进行Spotify API授权
我使用以下代码通过Google Apps脚本向Spotify API发出请求:Google apps script 通过谷歌应用程序脚本进行Spotify API授权,google-apps-script,google-sheets,spotify,Google Apps Script,Google Sheets,Spotify,我使用以下代码通过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 resul
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;
}
函数搜索(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getActiveSheet();
var artist=sheet.getRange(1,1).getValue();
artist=encodeURIComponent(artist.trim());
var结果=searchSpotify(艺术家);
Logger.log(结果);
}
函数searchSpotify(艺术家){
//搜索spotify并返回艺术家ID
var response=UrlFetchApp.fetch(“https://api.spotify.com/v1/search?q=“+artist+”&type=artist&limit=1”,
{方法:“获取”,
标题:{
“contentType”:“application/json”,
“授权”:持票人BQBnpSUdaEweirImw23yh2DH8OGhTwh5a_VnY_fgb2BPML0KvFvYd04CaEdUhQN9N4ZUXMIVfJ1MjFe1_j0Gl0UoHDhcoC_DKLLUZYOK8BO6I2_WFXSBGZP3K5EUJULANMTWCDZQNL-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);
回归艺术家;
}
函数getRelatedArtists(uri){
//使用返回的ID搜索相关艺术家
var response=UrlFetchApp.fetch(“https://api.spotify.com/v1/artists/“+uri+”/相关艺术家”,
{方法:“获取”,
标题:{
“contentType”:“application/json”,
“授权”:持票人BQBnpSUdaEweirImw23yh2DH8OGhTwh5a_VnY_fgb2BPML0KvFvYd04CaEdUhQN9N4ZUXMIVfJ1MjFe1_j0Gl0UoHDhcoC_DKLLUZYOK8BO6I2_WFXSBGZP3K5EUJULANMTWCDZQNL-SNU0Co
},
});
json=response.getContentText();
var data=JSON.parse(JSON);
var=[];
for(变量i=0,len=data.artists.length;i
使用Spotify网站上的临时授权令牌可以正常工作,但该令牌每小时刷新一次,因此显然是无用的
我正在尝试使用我在Spotify上设置的我自己的授权令牌和ID,但我正在努力使其正常工作。据我所知,我可能需要在开始时添加一个额外步骤来启动授权流程,但我尝试了所有建议的方法,但不断收到服务器错误。从文档中,似乎“客户端凭据流”使用了基本授权 要使用此功能,首先需要检索“客户id”和“客户机密”。 示例脚本:
- 从curl示例中,
需要作为表单发送grant\u type
{
"access_token": "NgCXRKc...MzYjw",
"token_type": "bearer",
"expires_in": 3600,
}
注:
- 这是一个简单的示例脚本。所以请根据你的情况修改这个
- 我根据文档中的示例curl编写了这个示例脚本
{
"access_token": "NgCXRKc...MzYjw",
"token_type": "bearer",
"expires_in": 3600,
}
发件人:
致:
- 当该值从API返回时,它将作为字符串返回。因此,需要使用将其解析为对象
Logger.log(res.getContentText())
var obj = JSON.parse(res.getContentText());
Logger.log(obj.access_token)