Spotify API Client Credentials Flow returning 400 error(Spotify API客户端凭据流返回400错误)
本文介绍了Spotify API客户端凭据流返回400错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
如果我使用的是客户端凭据流,为什么它会认为我使用的是持有者令牌?(另外,如果我将身份验证更改为持有者,我会收到401错误&无效的访问令牌)
问题描述
使用客户端凭据流的Spotify文档here:
我能够在Google应用程序脚本(Java脚本)中创建API请求。 数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">
function callAPI () {
SPOTIFY_CLIENT_SECRET = secret
SPOTIFY_CLIENT_ID = id
const HEADERS = {
"Content-Type": "application/json",
'Authorization': `Basic ${Utilities.base64Encode(SPOTIFY_CLIENT_ID + ':' + SPOTIFY_CLIENT_SECRET)})`
}
const BODY = {
'grant_type': 'client_credentials'
}
var url = `https://api.spotify.com/api/token`
var requestOptions = {
'method': 'POST',
'headers': HEADERS,
'payload': JSON.stringify(BODY),
'muteHttpExceptions': true,
'redirect': 'follow'
};
var response = UrlFetchApp.fetch(url, requestOptions);
var data = JSON.parse(response.getContentText());
我对两件事感到困惑,请同时回答这两件事。
1)。Spotify文档规定在授权标头中的客户端凭据之前输入&qot;Basic&qot;。
但是,当我运行此代码时,我收到以下错误
数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">{ error:
{ status: 400,
message: 'Only valid bearer authentication supported' } }
2)。您能提供一个此代码的工作版本的示例吗?为什么它能够运行而不是我的?
推荐答案
我相信您的目标如下。
您要将以下cURL命令转换为Google Apps脚本。
curl -X "POST" -H "Authorization: Basic ZjM4ZjAw...WY0MzE=" -d grant_type=client_credentials https://accounts.spotify.com/api/token
grant_type=client_credentials作为表单数据发送。当我看到你的脚本时,它是作为数据发送的。并使用https://api.spotify.com/api/token的URL。但是curl命令使用https://accounts.spotify.com/api/token。"我想这些可能就是你出问题的原因。因此,当您的脚本被修改时,它将如下所示。
修改后的脚本:
function callAPI() {
SPOTIFY_CLIENT_SECRET = secret; // Please set your value.
SPOTIFY_CLIENT_ID = id; // Please set your value.
const HEADERS = {
'Authorization': `Basic ${Utilities.base64Encode(SPOTIFY_CLIENT_ID + ':' + SPOTIFY_CLIENT_SECRET)}` // Modified
}
const BODY = {
'grant_type': 'client_credentials'
}
var url = "https://accounts.spotify.com/api/token";
var requestOptions = {
'method': 'POST',
'headers': HEADERS,
'payload': BODY,
'muteHttpExceptions': true,
};
var response = UrlFetchApp.fetch(url, requestOptions);
var data = response.getContentText();
console.log(data)
}
注意:
- 再次看到您的脚本时,注意到
Basic ${Utilities.base64Encode(SPOTIFY_CLIENT_ID + ':' + SPOTIFY_CLIENT_SECRET)})需要修改。因为在这种情况下,是Basic ###)。请删除)。
引用:
- Client Credentials Flow
- fetch(url, params)
这篇关于Spotify API客户端凭据流返回400错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
编程基础网
本文标题为:Spotify API客户端凭据流返回400错误
基础教程推荐
猜你喜欢
- CORS:当凭据标志为真时,无法在 Access-Control-Allow-Origin 中使用通配符 2022-01-01
- 当木偶师打开Chrome时,不能使用Chrome扩展 2022-01-01
- 在 Javascript 中使用 Fetch API 上传文件并显示进度 2022-01-01
- 使用 jQuery 在悬停时交换 DIV 类 2022-01-01
- 从快速中间件中排除路由 2022-01-01
- HTML5 画布调整为父级 2022-01-01
- 即使每次插入第一个输入的值不同,第二个输入仍显示相同的输入值 2022-01-01
- 带角度的选项卡:仅使用 $http 在单击时加载选项卡 2022-01-01
- 最佳动态 JavaScript/JQuery 网格 2022-01-01
- 逻辑运算符 ||在 javascript 中,0 代表 Boolean false? 2022-01-01
