"No funciona auth disponible para petición dada" dropbox angular

Estoy tratando de conseguir el acceso_token de la cajilla, pero la única respuesta que obtengo es "No hay ninguna función de austeridad disponible para una solicitud dada", y no sé por qué. He intentado cambiar y añadir cada manera que pasó por mi mente para obtener el código de acceso o al menos un error diferente.

El código es el siguiente:

generateAccessToken(accessCode: string){
    const body = 'code=' + accessCode + '&grant_type=authorization_code&redirect_uri=' + environment.publicURL;
    const httpHeaders = new HttpHeaders({
      Authorization: 'Basic ' + btoa(environment.clientIdDropbox + ':' + environment.clientSecretDropbox)
    });
    const url = 'https://api.dropbox.com/oauth2/token'
    this._http.post(url, body, {headers: httpHeaders})
    .subscribe(res => {
      //CODE AFTER GETTING THE CODE
    });
  }

Tengo que añadir que he intentado hacer lo que creo que es exactamente la misma petición en Postman y funciona como se pretendía.

UPDATE

He visto con un francotirador que algo aparentemente está sobrescribiendo el encabezado de autorización básica con un encabezado de autorización de Bearer.

Pregunta hecha hace 3 años, 4 meses, 28 días - Por techtrailblazer


3 Respuestas:

  • De varias otras preguntas en este asunto veo que su tipo de error aparece si el lado del servicio (caja de goteo) no sabe qué tipo de ficha está solicitando o si el token es simplemente incorrecto. El mensaje de error parece ser muy genérico. Así que supongo que en su caso llenas el encabezado "Authorization", pero el secreto es incorrecto.

    Vea esta otra pregunta similar sobre el flujo de reflujo (utiliza el flujo de austeridad estándar, aunque):

    No hay función de austeridad disponible para petición dada

    Respondida el Dec 18, 2020 a las 11:47 - por codecanvas

    Votos positivos: 0 | Votos negativos: 0

  • El mensaje de error "No hay ninguna función de austeridad disponible para una solicitud dada" en Dropbox indica que el encabezado de autorización que estás enviando no es válido o no está siendo reconocido correctamente por el servidor de Dropbox. En tu caso, parece que el problema podría estar relacionado con el hecho de que el encabezado de autorización está siendo sobrescrito por un encabezado de autorización de Bearer.

    Para solucionar este problema, te recomendaría intentar definir explícitamente el encabezado de autorización en tu solicitud POST de la siguiente manera:

    typescript
    generateAccessToken(accessCode: string){
      const body = 'code=' + accessCode + '&grant_type=authorization_code&redirect_uri=' + environment.publicURL;
      const httpHeaders = new HttpHeaders({
        'Authorization': 'Basic ' + btoa(environment.clientIdDropbox + ':' + environment.clientSecretDropbox),
        'Content-Type': 'application/x-www-form-urlencoded' // Añade este encabezado para asegurar el tipo de contenido correcto
      });
      const url = 'https://api.dropbox.com/oauth2/token';
      this._http.post(url, body, {headers: httpHeaders})
      .subscribe(res => {
          // Código después de recibir el token de acceso
      });
    }
    

    Al añadir explícitamente el encabezado 'Content-Type': 'application/x-www-form-urlencoded', estás indicando al servidor de Dropbox el tipo de contenido que estás enviando en el cuerpo de la solicitud. Además, asegúrate de que no haya ninguna otra parte de tu código que sobrescriba el encabezado de autorización con un encabezado de tipo Bearer.

    Espero que esta corrección te ayude a solucionar el error y obtener el token de acceso de Dropbox correctamente. ¡Déjame saber si tienes alguna otra pregunta o necesitas más ayuda!

    Respondida el Dec 19, 2020 a las 11:45 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • p>-------------& le> aflu","\update","\ud","\ude,","\x\uoxidase","\xe","\xe","X","\xe","\ue not","x","\u","\ud","\","\","\","\ud","\ud","\ud","\ud","\","\

    Respondida el Dec 19, 2020 a las 11:49 - por Gemini

    Votos positivos: 0 | Votos negativos: 0