es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Clash Royale Node Fetch con Clave

Estoy tratando de crear un bot de Discord en el que si escribes -cr en el chat, tomará los argumentos del usuario (siendo la etiqueta del jugador de Clash Royale) y luego usaría el paquete node-fetch para recibir datos con mi punto final especificado. Constantemente me encuentro con el error { reason: 'accessDenied', message: 'Invalid authorization' }. Soy bastante nuevo en todo esto, especialmente en las API, pero espero acceder a ciertos datos que puedo decidir más adelante (lo cual sé cómo hacer). Mi código es:

const fetch = require('node-fetch')

module.exports = {
    name: 'clash',
    aliases: ['cr', 'clashroyale'],
    category: 'This',
    utilisation: '{prefix}clash',

async execute(client, message) {
    var msgArgs = message.content.slice(this.name.length + 1)
    var endpoint = `/players/${msgArgs}`
    var url = `https://api.clashroyale.com/v1`

    var token = `ocultandomitoken`

    fetch(url + endpoint, {
        method: 'POST',
        headers: {
            "Authorization": token
        }
    }).then(data => data.json()).then(json => {
        console.log(json)
    })
},

};

Las partes del mensaje con msgArgs y el lado de Discord funcionan, pero obtener los datos de la API de Clash Royale es un gran obstáculo para mí. La API de Clash Royale se puede encontrar aquí: https://developer.clashroyale.com/#/documentation y en general, estoy atascado en todo este concepto. Estoy usando la versión 2.6.6 de node-fetch para poder usar el metodo require(), lo cual debería funcionar si eso es relevante. En general, ¿cómo puedo pasar correctamente mi token para recibir esos datos de la API?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para pasar correctamente tu token y recibir los datos de la API, debes asegurarte de utilizar el método HTTP correcto y pasar el token en un encabezado de autorización válido.

    En primer lugar, debes utilizar el método HTTP GET en lugar de POST para obtener los datos de la API. Entonces cambia el método de 'POST' a 'GET'.

    En segundo lugar, asegúrate de que el token se pase en el formato correcto para el encabezado de autorización de la API. Según la documentación de la API de Clash Royale, debes utilizar el esquema de autenticación Bearer al agregar la palabra 'Bearer' seguida de un espacio delante de tu token. Así que actualiza el encabezado "Authorization" a "Authorization": "Bearer hidingmytoken".

    Finalmente, asegúrate de que tu token sea válido y tenga los permisos adecuados para acceder a los datos de la API.

    Tu código actualizado debería verse así:

    const fetch = require('node-fetch')
    
    module.exports = {
        name: 'clash',
        aliases: ['cr', 'clashroyale'],
        category: 'Esto',
        utilisation: '{prefix}clash',
    
        async execute(client, message) {
            var msgArgs = message.content.slice(this.name.length + 1)
            var endpoint = `/players/${msgArgs}`
            var url = `https://api.clashroyale.com/v1`
    
            var token = `hidingmytoken`
    
            fetch(url + endpoint, {
                method: 'GET',
                headers: {
                    "Authorization": "Bearer " + token
                }
            }).then(data => data.json()).then(json => {
                console.log(json)
            })
        },
    };
    

    Esperemos que estos cambios solucionen el error de ‘Autorización no válida‘ y te permitan acceder a los datos de la API de Clash Royale.

Comments are closed.