Estoy tratando de autenticar mi aplicación de terceros con una cuenta de Reddit usando oauth.
Primero llegué a este punto final
let AuthorizationUrl = https://www.reddit.com/api/v1/authorize?client_id=${redditClientId}&response_type=code&state=${state}&redirect_uri=${oAuthCallbackURL}&duration=permanent&scope=${scopes} ;
y luego me enviaron un código a mi URL de devolución de llamada
luego llegué al siguiente punto final de esta manera:
let accessTokenUrl = `https://www.reddit.com/api/v1/access_token`; let accessTokenRequest = new URLSearchParams(); accessTokenRequest.append("grant_type", "authorization_code"); accessTokenRequest.append("code", code); accessTokenRequest.append("redirect_uri", oAuthCallbackURL); let redditClientId = process.env.REDDIT_CLIENT_ID; let redditSecret = process.env.REDDIT_SECRET; const clientIdAndSecretBase64 = Buffer.from(`${redditClientId}:${redditSecret}`).toString('base64'); try { let authorizationCodeResponse = await axios.post(accessTokenUrl, accessTokenRequest, { headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': `Basic ${clientIdAndSecretBase64}` } }); let { data } = authorizationCodeResponse; console.log(authorizationCodeResponse); console.log(`Reddit OAUTH Response=${JSON.stringify(data, null, 2)}`); } catch (e) { console.log(e); }Pero todo lo que sigo recibiendo es este error:
Respuesta OAUTH de Reddit = { "error": "invalid_grant" }
En una observación cuidadosa de los documentos de Reddit, vi una línea que dice invalid_grant solo se lanza cuando
El código ha caducado o ya se ha utilizado
Esto no tiene sentido porque durante la fase de prueba olvidé guardar el token de acceso. Debería poder reiniciar esta solicitud en cualquier momento. ¿Por qué esta limitación? Realmente quería ver cómo es la respuesta antes de guardar el token de acceso. Ahora, claramente parece que no hay forma de resolver este problema.
Pero cualquier idea será realmente apreciada.