Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

264
Vistas
El flujo de credenciales del cliente API de Spotify devuelve el error 400

Uso de la documentación de Spotify para el flujo de credenciales del cliente aquí :

Pude crear una solicitud de API en el script de la aplicación de Google (Javascript).

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

Estoy confundido acerca de dos cosas, por favor sea capaz de responder a ambas.

1). La documentación de Spotify indica ingresar "Básico" antes de las credenciales del cliente en el encabezado de autorización.

Imagen de credencial de cliente

Sin embargo, cuando ejecuto este código, aparece este error

 { error: { status: 400, message: 'Only valid bearer authentication supported' } }

Si estoy usando el flujo de credenciales del cliente, ¿por qué cree que estoy usando un token de portador? (Además, si cambio la autenticación a Bearer, obtengo un error 401 "Token de acceso no válido")

2). ¿Podría proporcionar un ejemplo de una versión funcional de este código y por qué pudo ejecutarse de forma opuesta a la mía?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Creo que su objetivo es el siguiente.

  • Desea convertir el siguiente comando curl a Google Apps Script.

     curl -X "POST" -H "Authorization: Basic ZjM4ZjAw...WY0MzE=" -d grant_type=client_credentials https://accounts.spotify.com/api/token

En este caso, grant_type=client_credentials se envía como datos del formulario. Cuando vi su secuencia de comandos, se envía como los datos. Y usa la URL de https://api.spotify.com/api/token . Pero el comando curl usa https://accounts.spotify.com/api/token . `Pensé que esto podría ser la razón de su problema. Entonces, cuando se modifica su script, se convierte en lo siguiente.

Guión modificado:

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

Nota:

  • Cuando volví a ver su secuencia de comandos, noté que es necesario modificar Basic ${Utilities.base64Encode(SPOTIFY_CLIENT_ID + ':' + SPOTIFY_CLIENT_SECRET)}) . Porque en este caso, es Basic ###) . Por favor elimine ) .

Referencias:

  • Flujo de credenciales de cliente
  • buscar (url, parámetros)
about 4 years ago · Juan Pablo Isaza Denunciar

0

¡Me lo imaginé! Por alguna razón, debe agregar la identificación del cliente y el secreto del cliente en los datos del formulario. Los documentos de Spotify dicen que los coloque en los encabezados codificados en base64, pero ese no es el caso en este caso. (Ni siquiera necesita codificarlos)

Además, ni siquiera necesita incluir el parámetro de tipo de contenido como dice el documento.

el código de trabajo se ve así

 function callAPI () { let SPOTIFY_CLIENT_SECRET = secret let SPOTIFY_CLIENT_ID = id const BODY = { 'Content-Type': 'application/x-www-form-urlencoded', 'grant_type': 'client_credentials', "client_id": SPOTIFY_CLIENT_ID, "client_secret": SPOTIFY_CLIENT_SECRET, } var url = "https://accounts.spotify.com/api/token"; var requestOptions = { 'method': 'POST', 'payload': BODY, 'muteHttpExceptions': true, }; var response = UrlFetchApp.fetch(url, requestOptions); var data = response.getContentText(); console.log(data) }

Encontré mi respuesta al leer sobre un problema similar aquí

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda