在Google Apps Scripts中获取Spotify API有效访问令牌的问题与解决
解决Google Sheets脚本调用Spotify API获取访问令牌的问题
我最近在Google Sheets里编写脚本,打算用Implicit Grant Flow调用Spotify API,结果在获取有效访问令牌时踩了两个坑,不过都顺利解决了,整理出来给遇到同样问题的朋友参考:
已解决问题1:unsupported_grant_type错误
- 错误信息:
"error":"unsupported_grant_type","error_description":"grant_type must be client_credentials, authorization_code or refresh_token"
- 问题原因:UrlFetchApp.fetch的payload参数里没有指定正确的授权类型
- 解决方案:在请求的payload中明确添加
'grant_type':'client_credentials'字段
已解决问题2:405 Method Not Allowed错误
- 错误信息:返回405状态码
- 问题原因:一是误用了GET方法请求令牌(Spotify官方文档要求必须用POST),二是请求地址填写错误
- 解决方案:将请求地址修正为
https://accounts.spotify.com/api/token,同时把请求方法设置为POST
更新后的可用代码
var fetchParams = { 'method':'post', 'payload':{'grant_type':'client_credentials'}, 'headers':{'Authorization':authorization}, 'muteHttpExceptions':true } var replaceResponse = UrlFetchApp.fetch('https://accounts.spotify.com/api/token', fetchParams); var regExp = /access_token(.*?):/; var contentText = replaceResponse.getContentText(); var access_token = contentText.slice(contentText.search('access_token')+15,contentText.search(',')-1); var requestOptions = { 'headers':{'Authorization':'Bearer '+access_token}, 'muteHttpExceptions':true } var finalResponse = UrlFetchApp.fetch('https://api.spotify.com/v1/tracks/4dhARBZ8YLvm8oRDnCIeXr', requestOptions);
内容的提问来源于stack exchange,提问作者wookieebreath
相关产品推荐
相关产品推荐

