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

Spotify API-在Google Apps脚本中检索有效的访问令牌

农存
2023-03-14

以下是Spotify API的文档(我使用的是隐式授权流):https://beta . developer . Spotify . com/documentation/general/guides/authorization-guide/# Implicit-Grant-Flow

我正在尝试在Google表格中编写脚本。我专注于基本设置,但我似乎无法让访问令牌正常工作。

解决了的:

我目前收到以下错误(似乎我的fetch方法的参数设置不正确):

“错误”:“unsupported_grant_type”,“error_description”:“grant_type必须是client_credentials、authorization_code或refresh_token”

解决方案:

根据Google Scripts方法UrlFetchApp,grant_type必须作为有效负载列出。fetch(请参阅下面的更新代码)

-

解决了的:

正如您在下面看到的,我在尝试获取令牌时使用“get”方法(尽管文档指定了“post”),因为post方法始终返回405错误。我认为这是我搞砸的一步。我假设我不应该使用csrf_token作为访问令牌。

解决方案:

https://accounts.spotify.com/token应该https://accounts.spotify.com/api/token

更新了以下工作代码:

  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);

共有1个答案

鲜于阳
2023-03-14

我修改了用于检索访问令牌的脚本,如下所示:curl-X“POST”-H“授权:基本ZjM4ZjAw…WY0MzE=“-d grant_type=client_credentialshttps://accounts.spotify.com/api/token。你能试试这个修改过的脚本吗?

var authorization = "Basic "+ Utilities.base64Encode('<client_id>:<client_secret>');
var fetchParams = {
  method: 'post', // Modified
  payload: {'grant_type': 'client_credentials'}, // Modified
  headers: {'Authorization': authorization},
  muteHttpExceptions: true
}
var replaceResponse = UrlFetchApp.fetch("https://accounts.spotify.com/api/token", fetchParams); // Modified
Logger.log(replaceResponse.getContentText())
    < li >客户端凭据流程

如果响应消息更改了,请告诉我。

 类似资料:
  • 我试图使用以下所需信息从API生成访问令牌: 授权endpoint:https://api.paylocity.com/identityserver/connect/token 其他值请求必须在请求正文中发布以下表单编码值: grant_type=client_credentials范围=WebLinkAPI 我尝试使用Python'requests'包,但没有成功,请参见下面: 我已经验证了我的

  • 我有一个Angular4应用程序托管在Azure Web应用程序和一个应用程序中。NET核心Web API托管在Azure API应用程序中。 该API由Azure Active Directory保护。目前,我使用ng2 adal获取一个访问令牌,并将其注入头中以执行API调用。 现在,我尝试删除ng2 adal模块,并使用相同的ClientId(如API)使用身份验证/授权功能保护我的Web应

  • 我正在实现刷新令牌,我使用passportjs。我不完全理解的是,我应该在哪里以及如何检查访问令牌的有效性,以及在无效令牌到达的情况下抛出< code > tokenexpire exception 。 方法当前如下所示: 我想知道这样检查是否安全:

  • 我正在尝试获取Spotify API访问令牌。根据Spotify API站点的这些说明: 请求将包括请求正文中的参数: null null 生成: 我正试图在这样的球拍中实现这一点: http.rkt 这很奇怪,因为它告诉我,即使我的grant_type是client_credentials(请参见当我调用on)时,我的grant_type不受支持。是什么导致了这一切?

  • 我正在开发我的第一个Spotify应用程序,现在我正在处理授权过程。 到目前为止,我已经成功地从https://accounts.spotify.com/authorize 现在我通过PHP CURL request发送一个POST请求来获取我的访问令牌。 Spotify对此步骤的说明 我不断收到以下 JSON 错误响应,指示我的grant_type无效,它为我提供了三个有效的选项: {"erro

  • 编辑:C#请求示例 编辑:我获得令牌的方式