当前位置: 首页 > 知识库问答 >
问题:

请求令牌时Spotify API OAUTH2服务器错误响应

公冶高义
2023-03-14

Spotify Oauth2文档-客户端凭证流

我问了一个类似的问题,我能够让代码在google apps脚本(javascript)中运行。我正在使用客户端凭据流。然而,我试图在Nodejs中重新创建这段代码。运行这段代码时,我收到一个服务器错误。

error: "server_error"

这是Nodejs中的问题代码

const defaultConfig = {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json',
// this encodes the app_id and api_key into a base64 string like the documentation states 
    'Authorization': `Basic ${btoa(spotify.API_ID + ':' + spotify.API_KEY)}`
  },

  body: JSON.stringify({
    'grant_type': 'client_credentials',
  })
  };

// this function is wrapped in a list titled, "apiSettings" with other functions. I just included the authorization function here:
  const apiSettings = {
   getSpotifyAuthorizeToken: async () => {
const endpoint = "https://accounts.spotify.com/api/token";
return await (await fetch(endpoint, defaultConfig)).json();
  },
};

我在谷歌应用程序脚本中使用了类似的代码,没有任何问题。

服务器错误可能是我在“localhost:xxxx”上运行Nodejs的结果吗?该文档指出,“客户端凭据流用于服务器到服务器的身份验证。”

如果不是这种情况,您能否提供一个工作

共有1个答案

宰父淳
2023-03-14

请求令牌时Spotify API OAUTH2服务器错误响应

从您之前的问题中,我想提出以下示例脚本。

如果要把这个答案的脚本转换成Node.js和node-fetch,下面这个脚本怎么样?

const spotify = { API_ID: "API_ID", API_KEY: "API_KEY" }; // Please set your client ID and client secret.

const buf = Buffer.from(spotify.API_ID + ":" + spotify.API_KEY);
const para = new URLSearchParams();
para.append("grant_type", "client_credentials");
const defaultConfig = {
  method: "POST",
  headers: { Authorization: `Basic ${buf.toString("base64")}` },
  body: para,
};
const apiSettings = {
  getSpotifyAuthorizeToken: async () => {
    const endpoint = "https://accounts.spotify.com/api/token";
    return await (await fetch(endpoint, defaultConfig)).json();
  },
};

如果要把这个答案的脚本转换成Node.js和node-fetch,下面这个脚本怎么样?

const spotify = { API_ID: "API_ID", API_KEY: "API_KEY" }; // Please set your client ID and client secret.

const para = new URLSearchParams();
para.append("grant_type", "client_credentials");
para.append("client_id", spotify.API_ID);
para.append("client_secret", spotify.API_KEY);
const defaultConfig = {
  method: "POST",
  body: para,
};
const apiSettings = {
  getSpotifyAuthorizeToken: async () => {
    const endpoint = "https://accounts.spotify.com/api/token";
    return await (await fetch(endpoint, defaultConfig)).json();
  },
};
    < li >节点获取
 类似资料:
  • 我正在尝试从访问代码中获取访问令牌。但存在 400 错误请求错误的错误 我正在使用此链接获取访问代码 https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 响应此链接,我正在获取查询字符串中的代码,返回 URL 代码=Mh12d04c8

  • 我正在尝试通过服务器到服务器方法与我的应用程序启用的BigQuery API进行通信。 我已经勾选了谷歌指南上的所有方框,以尽可能用C#构建我的JWT。 我已经对所有必要的东西进行了Base64Url编码。 然而,我从谷歌得到的唯一回复是400错误请求 我已经从其他SO问题中确定了以下所有内容: 使用 RSA 和 SHA256 正确加密签名 我正在使用 POST 并使用应用程序/x-www-表单-

  • 我可以获得帐户ID为#10540382的JWT访问令牌,这是我为我们公司的电子签名实现创建的。我用这个帐户完成了JWT实现,一切顺利。但是现在公司提供了我的新帐户ID#11024495。但是有了这个新帐户,我没有获得访问令牌。令牌APIhttps://account-d.docusign.com/oauth/token现在返回“远程服务器返回错误:(400)错误请求”。 DocuSign的人能帮我

  • 以下是我发送的更详细的数据(当然是经过审查的) 我明白这里的问题和我的非常相似,但所有提供的解决方案要么不工作(url编码),要么不适用(其他一切)。 我正在使用这份官方文件作为参考。 这可能非常明显,就像我在这里问的大多数问题一样。 编辑-我试过了 ...它返回了400。带或不带URL编码。

  • 我运行了keybeave实例 然后参观http://localhost:8080/auth/realms/master/protocol/openid-连接/令牌,获取内部服务器错误: 所以 > 哪里出错了,如何修复内部服务器错误?