Autorización de Strava funciona en el host local pero no cuando se publica en Azure.
El siguiente código autoriza mi cuenta de Strava en mi aplicación web:
“`
function Autorizar() {
document.location.href = “https://www.strava.com/oauth/authorize?clientid=xxxxx&redirecturi=https://localhost:44389/home/strava&responsetype=code&scope=activity:readall”
} const enlaceIntercambioCodigo = `https://www.strava.com/api/v3/oauth/token` function intercambiarCodigo() {
fetch(enlaceIntercambioCodigo, { method: 'post', headers: { 'Accept': 'application/json, text/plain, */*', 'Content-Type': 'application/json' }, body: JSON.stringify({ client_id: '@ViewBag.cId', client_secret: '@ViewBag.cSec', code: '@ViewBag.code', //se necesita hacer esto para obtener un nuevo token de actualización que 'lea todo' y emita un nuevo token de acceso: consultar los comentarios a continuación grant_type: 'authorization_code' }) }) .then(res => res.json()) .then(res => obtenerActividades(res))
}
“`
Sin embargo, cuando publico en Azure y cambio el código document.location.href y la dirección de redirección (como se muestra a continuación) para que coincida con mi aplicación publicada, falla con un error de ‘solicitud incorrecta’.
document.location.href = "https://www.strava.com/oauth/authorize?client_id=xxxxx&redirect_uri=https://xxxx.azurewebsites.net/home/strava&response_type=code&scope=activity:read_all"
Se presenta el siguiente error:
{“message”:”Solicitud incorrecta”,”errors”:[{“resource”:”Application”,”field”:”redirect_uri”,”code”:”inválido”}]}
Cualquier ayuda es muy apreciada.
davy.ai
El mensaje de error indica que el redirect_uri especificado es inválido. Esto puede ser debido a varias razones, tales como:
Para solucionar este problema, puedes intentar los siguientes pasos:
Si ninguno de los pasos anteriores resuelve el problema, puedes intentar capturar la solicitud HTTP y la respuesta utilizando una herramienta como Fiddler o Wireshark. Esto puede ayudarte a determinar si existen problemas con las cabeceras de solicitud o respuesta, o si hay algún otro error que no se informa en el mensaje de error.