Accede a todo EDteam con un único pago¡Sube a premium!
Banner de perfil
0

Andrea Vargas

@andreavargas

Chia, Colombia

Error 403 al obtener access token

Andrea Vargas@andreavargas

Hola comunidad. Estoy intentando hacer el llamado a un token por medio de un ajax y solo obtengo error 403, quisiera saber que estoy haciendo mal. Todas las credenciales estan bien. Este es mi código

function make_base_auth(user, password) {
 var tok = user + ':' + password;
 var hash = window.btoa(tok);
 return "Basic " + hash;
}

var auth = make_base_auth("4148974182", "GmiA2SspqT23RerXUts3xd4cCClnM6cl" );

$.ajax({
   type: 'POST',
   url: 'https://ngapi.freedompop.mx/api/auth/token/credentials', 
   dataType: 'json',
   data: {"username": "freshdesk@freedompop.mx", "password": "jvgXvHBrTrxkKJSt"},
   async: true,
   headers: {
   "Authorization": make_base_auth("4148974182","GmiA2SspqT23RerXUts3xd4cCClnM6cl")
 },
   success: function (response){
   alert('Thanks for your comment!');
   var tokenct = response.acces_token;
   }, function(error){
       console.log(error);
     } 
});


});    ~~~

Error al obtener el access token de una api.

Andrea Vargas@andreavargas

Hola comunidad. Estoy intentando conectarme a una api que posee unas credenciales que hay que pasar a través del body y tienen un basic auth. No logro conectarme a la misma y me da un error 403 usando ajax. Estas son las instrucciones para conectarse:

1 - endpoint en donde deben autenticarse:

https://ngapi.freedompop.mx/api/auth/token/credentials/xx

Como se los había comentado es necesario utilizar un Basic Auth con las siguientes credenciales:

Username: 4148974 Password: GmiA2SspqT23RerXUts3xd4cCClnM6cl

Adicional a esto en la parte del body se deben de mandar los siguientes parámetros:

username: xxx password: jvgXvHBrTrxkKJStxx

Este es mi código:


$.ajax({
   type: "POST",
   url: "https://ngapi.freedompop.mx/api/auth/token/credentials",
   dataType: 'json',
   async: false,
   headers: {
   "Authorization": "Basic " + ("4148974" + ":" + "GmiA2SspqT23RerXUts3xd4cCClnM6cl")
 },
   data: {"username": "xxx", "password": "jvgXvHBrTrxkKJSt"},
   success: function (response){
   alert('Thanks for your comment!');
   var tokenct = response.acces_token;
   }, function(error){
   		console.log(error);
   	}	
});

});   

Cargar inputs al introducir un numero en un input

Andrea Vargas@andreavargas

Hola Comunidad. Vengo con una nueva consulta: Deseo poder realizar una consulta y rellenar unos campos de texto a partir de introducir un numero de telefono sin necesidad de colocar la consulta por medio de una url. Los datos los traigo desde una API. Aquí el código del index y del template:

1const request = require('request'); 2const morgan = require('morgan'); 3const exphbs = require('express-handlebars'); 4const path = require('path'); 5const app = express(); 6const axios = require('axios'); 7 8 9//Settings 10app.set('port', process.env.PORT || 3000); 11app.set('views', path.join(__dirname, 'views')); 12app.engine('.hbs', exphbs({ 13 defaultLayout: 'main', 14 layoutsDir: path.join(app.get('views'), 'layouts'), 15 partialsDir: path.join(app.get('views'), 'partials'), 16 extname: '.hbs', 17 helpers: require('./lib/handlebars') 18})); 19app.set('view engine', '.hbs'); 20 21// Middlewares 22app.use(morgan('dev')); 23app.use(express.urlencoded({extended: false})); 24app.use(express.json()); 25 26 27//Global Variables 28app.use((req, res, next) => { 29 30 next(); 31}); 32 33//Routes 34 35 36 37app.get('/api/freshdesk/phone/', async (req, res) => { 38 39 const phoneNumber = req.params.phoneNumber; 40 let options = { 41 url: 'https://ngapi.freedompop.mx/api/freshdesk/phone/' + phoneNumber , 42 method: 'GET', 43 json: true, 44 headers: { 45 'Authorization': 'eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhYjQwMzIwM2MzNDE0MjYyOWVmNjcyMTUwZGQ4OGUxNCIsInJvbGUiOiJCUUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9IiwibmFtZSI6IkZyZXNoZGVzayBBUEkiLCJleHAiOjE1NzExNjI1NzF9.6OYLPsPqWAOvUuuUEnRQZWNBR0npENbxnFd1t5JoeNM' 46 } 47 48 }; 49 50 51 52 request(options, function(err, r) { 53 54 const phoneN = r.body; 55 console.log(phoneN); 56 res.render('layouts/test', {phoneN}); 57 58 }); 59 60 61 62 63 64}); 65 66// Public 67app.use(express.static(path.join(__dirname, 'public'))); 68 69//Starting Server 70app.listen(app.get('port'), () => { 71 console.log('Server on port ', app.get('port')); 72});~~~ 73 74 75 76~~~<div class="container p-4"> 77 <div class="row"> 78 <div class="col-md-4 mx-auto"> 79 <div class="card "> 80 <div class="card-body"> 81 82 <form action="/api/freshdesk/phone/{{phoneN}}" method="POST"> 83 84 <div class="form-group"> 85 <label>Phone Number</label> 86 <input type="number" value="" class="form-control" name="phoneNumber" id="phoneNumber" autofocus> 87 88 </div> 89 90 <div class="form-group"> 91 <label>Email</label> 92 <input type="email" value="{{phoneN.email}}" class="form-control" name="email" id="email" autofocus> 93 94 </div> 95 <div class="form-group"> 96 <label>Iccid</label> 97 <input type="text" value="{{phoneN.iccid}}" class="form-control" name="iccid" id="iccid" autofocus> 98 </div> 99 <div class="form-group"> 100 <label>Account Id</label> 101 <input type="text" value="{{phoneN.accountId}}" class="form-control" name="accountId" id="accountId" autofocus> 102 </div> 103 <div class="form-group"> 104 <label>Device Name</label> 105 <input type="text" value="{{phoneN.deviceName}}" class="form-control" name="deviceName" id="deviceName" autofocus> 106 </div> 107 <div class="form-group"> 108 <label>Network</label> 109 <input type="text" value="{{phoneN.network}}" class="form-control" name="network" id="network" autofocus> 110 </div> 111 <div class="form-group"> 112 <label>Plan Name</label> 113 <input type="text" value="{{phoneN.planName}}" class="form-control" name="planName" id="planName" autofocus> 114 115 </div> 116 <div class="form-group"> 117 <button class="btn btn-success btn-block">Guardar </button> 118 </div> 119 </form> 120 </div> 121 </div> 122 </div> 123 </div> 124</div>

Problemas al pasar una variable a un template hbs

Andrea Vargas@andreavargas

Hola Comunidad. Actualmente estoy desarrollando una aplicación donde me conecto a una API, donde con solo pasarle un número de teléfono obtengo la informaciónn, este es el código:

1const request = require('request'); 2const morgan = require('morgan'); 3const exphbs = require('express-handlebars'); 4const path = require('path'); 5const app = express(); 6const axios = require('axios'); 7 8 9//Settings 10app.set('port', process.env.PORT || 3000); 11app.set('views', path.join(__dirname, 'views')); 12app.engine('.hbs', exphbs({ 13 defaultLayout: 'main', 14 layoutsDir: path.join(app.get('views'), 'layouts'), 15 partialsDir: path.join(app.get('views'), 'partials'), 16 extname: '.hbs', 17 helpers: require('./lib/handlebars') 18})); 19app.set('view engine', '.hbs'); 20 21// Middlewares 22app.use(morgan('dev')); 23app.use(express.urlencoded({extended: false})); 24app.use(express.json()); 25 26 27//Global Variables 28app.use((req, res, next) => { 29 30 next(); 31}); 32 33//Routes 34 35 36 37app.get('/api/freshdesk/phone/:phoneNumber', async (req, res) => { 38 const phoneNumber = req.params; 39 let options = { 40 url: 'https://ngapi.freedompop.mx/api/freshdesk/phone/' + phoneNumber , 41 method: 'GET', 42 json: true, 43 headers: { 44 'Authorization': 'eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhYjQwMzIwM2MzNDE0MjYyOWVmNjcyMTUwZGQ4OGUxNCIsInJvbGUiOiJCUUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9IiwibmFtZSI6IkZyZXNoZGVzayBBUEkiLCJleHAiOjE1NzExNDkxNjF9.toL9ILqMp-DDmGIPxXWxBNaS3jWaL_TLObU2TZUPSQc' 45 } 46 47 }; 48 const phoneN = r.body; 49 res.render('layouts/test', {phoneN:phoneN[0]}); 50 51 }); 52 53 54}); 55 56// Public 57app.use(express.static(path.join(__dirname, 'public'))); 58 59//Starting Server 60app.listen(app.get('port'), () => { 61 console.log('Server on port ', app.get('port')); 62}); ~~~ 63 64El problema radica es que cuando quiero pasar la variable al archivo test.hbs, esta no la muestra, aquí el código del archivo: 65 66~~~<div class="container p-4"> 67 <div class="row"> 68 <div class="col-md-4 mx-auto"> 69 <div class="card "> 70 <div class="card-body"> 71 <form action="/api/freshdesk/phone/{{phoneN}}" method="POST"> 72 <div class="form-group"> 73 <input type="email" value="{{phoneN.email}}" class="form-control" name="email" id="email" autofocus> 74 </div> 75 <div class="form-group"> 76 <input type="text" value="{{phoneN.iccid}}" class="form-control" name="iccid" id="iccid" autofocus> 77 </div> 78 <div class="form-group"> 79 <input type="text" value="{{phoneN.accountId}}" class="form-control" name="accountId" id="accountId" autofocus> 80 </div> 81 <div class="form-group"> 82 <input type="text" value="{{phoneN.deviceName}}" class="form-control" name="deviceName" id="deviceName" autofocus> 83 </div> 84 <div class="form-group"> 85 <input type="text" value="{{phoneN.network}}" class="form-control" name="network" id="network" autofocus> 86 </div> 87 <div class="form-group"> 88 <input type="text" value="{{phoneN.planName}}" class="form-control" name="planName" id="planName" autofocus> 89 90 </div> 91 <div class="form-group"> 92 <button class="btn btn-success btn-block">Guardar </button> 93 </div> 94 </form> 95 </div> 96 </div> 97 </div> 98 </div> 99</div>~~~

Traer datos de una API a un campo en node js

Andrea Vargas@andreavargas

Hola comunidad. Necesito su ayuda con lo siguiente: Actualmente estoy trabajando con una API privada y necesito poder imprimir los datos en unos campos, pero no logro imprimir los datos y solo logro mostrarlos en formato json. Aquí les muestro mi código:

1const request = require('request'); 2const morgan = require('morgan'); 3const exphbs = require('express-handlebars'); 4const path = require('path'); 5const app = express(); 6 7 8//Settings 9app.set('port', process.env.PORT || 3000); 10app.set('views', path.join(__dirname, 'views')); 11app.engine('.hbs', exphbs({ 12 defaultLayout: 'main', 13 layoutsDir: path.join(app.get('views'), 'layouts'), 14 partialsDir: path.join(app.get('views'), 'partials'), 15 extname: '.hbs', 16 helpers: require('./lib/handlebars') 17})); 18app.set('view engine', '.hbs'); 19 20// Middlewares 21app.use(morgan('dev')); 22app.use(express.urlencoded({extended: false})); 23app.use(express.json()); 24 25 26//Global Variables 27app.use((req, res, next) => { 28 29 next(); 30}); 31 32//Routes 33app.use(require('./routes')); 34app.get('/api/freshdesk/phone/:phoneNumber', (req, res) => { 35 const phoneNumber = req.params.phoneNumber; 36 let options = { 37 url: 'https://ngapi.freedompop.mx/api/freshdesk/phone/' + phoneNumber , 38 method: 'GET', 39 json: true, 40 headers: { 41 'Authorization': "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhYjQwMzIwM2MzNDE0MjYyOWVmNjcyMTUwZGQ4OGUxNCIsInJvbGUiOiJCUUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9IiwibmFtZSI6IkZyZXNoZGVzayBBUEkiLCJleHAiOjE1Njk2MTkzMDB9.uakqzw4dS7GCI81PrQmACDv8T0d0rGZGe2T0v5BNMyE" 42 } 43 44 }; 45 request(options, function(err, r) { 46 47 res.render('layouts/test', (r.body)); 48 //res.render('layouts/test', {options}) 49 50 51 52 }); 53 54}); 55 56// Public 57app.use(express.static(path.join(__dirname, 'public'))); 58 59//Starting Server 60app.listen(app.get('port'), () => { 61 console.log('Server on port ', app.get('port')); 62});~~~

¿Cómo solucionar el error Cannot add or update a child row en mysql ?

Andrea Vargas@andreavargas

Hola a todos. Estoy haciendo una aplicación en node js y mysql y estoy intentando agregar unos datos en una tabla llamada "clientes", pero al momento de guardar los datos se genera el siguiente error:

" UnhandledPromiseRejectionWarning: Error: ER_NO_REFERENCED_ROW_2: Cannot add or update a child row: a foreign key constraint fails (facturacion.clientes, CONSTRAINT fk_clientes_condicion_iva1 FOREIGN KEY (condicion_iva_id) REFERENCES condicion_iva (id) ON DELETE NO ACTION ON UPDATE"

No entiendo que es lo que sucede. Aquí les dejo el codigo sql:

CREATE TABLE IF NOT EXISTS  condicion_iva (
 id INT NOT NULL AUTO_INCREMENT,
 nombre VARCHAR(45) NOT NULL,
 porcentaje INT NOT NULL,
 PRIMARY KEY (id))
ENGINE = InnoDB;~~~ 

~~~CREATE TABLE IF NOT EXISTS tipo_cuenta (
 id INT NOT NULL AUTO_INCREMENT,
 nombre VARCHAR(45) NOT NULL,
 PRIMARY KEY (id))
ENGINE = InnoDB;~~~ 

~~~CREATE TABLE IF NOT EXISTS tipo_documento (
 id INT NOT NULL AUTO_INCREMENT,
 nombre VARCHAR(45) NOT NULL,
 PRIMARY KEY (id),
 UNIQUE INDEX nombre_UNIQUE (nombre ASC) VISIBLE)
ENGINE = InnoDB;~~~

~~~CREATE TABLE IF NOT EXISTS clientes (
 id INT NOT NULL AUTO_INCREMENT,
 nombre VARCHAR(80) NOT NULL,
 apellido VARCHAR(80) NOT NULL,
 telefono INT NOT NULL,
 email VARCHAR(45) NOT NULL,
 calle VARCHAR(150) NOT NULL,
 numero VARCHAR(10) NOT NULL,
 localidad VARCHAR(45) NOT NULL,
 provincia VARCHAR(50) NOT NULL,
 observaciones LONGTEXT NULL,
 condicion_iva_id INT NOT NULL,
 tipo_cuenta_id INT NOT NULL,
 tipo_documento_id INT NOT NULL,
 PRIMARY KEY (id, condicion_iva_id, tipo_cuenta_id, tipo_documento_id),
 UNIQUE INDEX email_UNIQUE (email ASC) VISIBLE,
 INDEX fk_clientes_condicion_iva1_idx (condicion_iva_id ASC) VISIBLE,
 INDEX fk_clientes_tipo_cuenta1_idx (tipo_cuenta_id ASC) VISIBLE,
 INDEX fk_clientes_tipo_documento1_idx (tipo_documento_id ASC) VISIBLE,
 CONSTRAINT fk_clientes_condicion_iva1
   FOREIGN KEY (condicion_iva_id)
   REFERENCES condicion_iva (id)
   ON DELETE NO ACTION
   ON UPDATE NO ACTION,
 CONSTRAINT fk_clientes_tipo_cuenta1
   FOREIGN KEY (tipo_cuenta_id)
   REFERENCES  tipo_cuenta (`id`)
   ON DELETE NO ACTION
   ON UPDATE NO ACTION,
 CONSTRAINT `fk_clientes_tipo_documento1`
   FOREIGN KEY (`tipo_documento_id`)
   REFERENCES `mydb`.`tipo_documento` (`id`)
   ON DELETE NO ACTION
   ON UPDATE NO ACTION)
ENGINE = InnoDB;~~~

2 - El código de mi ruta: 

~~~const express = require('express'); 
const router = express.Router(); 

const db = require('../database');

router.get('/crear', async (req,res) => {
   const condicionIva = await db.query('SELECT * FROM condicion_iva'); 
   const tipoCuenta = await db.query('SELECT * FROM tipo_cuenta'); 
   const tipoDocumento = await db.query('SELECT * FROM tipo_documento'); 
   console.log(condicionIva);  
   res.render('clientes/crear',  {condicionIva, tipoCuenta, tipoDocumento});
});

router.post('/crear', async(req, res) => {
   const { nombre } = req.body;
   const { apellido } = req.body; 
   const { telefono } = req.body;
   const { email } = req.body;
   const { calle } = req.body; 
   const { numero } = req.body;
   const { localidad } = req.body;
   const { provincia } = req.body;
   const { observaciones } = req.body;
   const { condicion_iva_id } = req.body;
   const { tipo_cuenta_id } = req.body;
   const { tipo_documento_id } = req.body;
   const newClientes = {
       nombre,
       apellido, 
       telefono,
       email,
       calle,
       numero,
       localidad,
       provincia, 
       observaciones, 
       condicion_iva_id, 
       tipo_cuenta_id, 
       tipo_documento_id
   };
   await db.query('INSERT INTO clientes set ?', [newClientes]);
   req.flash('success', 'Cliente guardado correctamente'); 
   res.redirect('/clientes'); 
   console.log(req.body); 
});
module.exports = router; ~~~

3- Y por último el código de mi vista: 

~~~<form action="/clientes/crear" method="POST">
            <div class="form-group">
                   <input type="text" class="form-control" name="nombre" placeholder="Nombre" autofocus>
                           </div>
                           <div class="form-group">
                               <input type="text" class="form-control" name="apellido" placeholder="Apellido" >
                           </div>
                           <div class="form-group">
                               <input type="number" class="form-control" name="telefono" placeholder="Teléfono">
                           </div>
                           <div class="form-group">
                               <input type="email" class="form-control" name="email" placeholder="Email">
                           </div>
                           <div class="form-group">
                               <input type="text" class="form-control" name="calle" placeholder="Calle">
                           </div>
                           <div class="form-group">
                               <input type="text" class="form-control" name="numero" placeholder="Número de Calle">
                           </div>
                           <div class="form-group">
                               <input type="text" class="form-control" name="localidad" placeholder="Localidad">
                           </div>
                           <div class="form-group">
                               <input type="text" class="form-control" name="provincia" placeholder="Provincia">
                           </div>
                           <div class="form-group">
                               <textarea name="observaciones" cols="30" rows="5" class="form-control" placeholder="Observaciones"></textarea>
                           </div>
                           <div class="form-group">
                               <select name="condicion_iva_id"  >
                                   {{#each condicionIva}}
                                   <option  >{{nombre}}</option>
                               {{/each}}
                               </select>
                           </div>
                           <div class="form-group">
                               <select name="tipo_cuenta_id" id="" >
                                   {{#each tipoCuenta}}
                                   <option  >{{nombre}}</option>
                               {{/each}}
                               </select>
                           </div>
                           <div class="form-group">
                               <select name="tipo_documento_id" id="" >
                                   {{#each tipoDocumento}}
                                   <option >{{nombre}}</option>
                               {{/each}}
                               </select>
                           </div>
                           <div class="form-group">
                               <button class="btn btn-success btn-block">Guardar </button>
                           </div>
                    </form>~~~

Agradecería cualquier ayuda que me puedan otorgar. Muchas gracias de antemano

Retornar el numero de movimientos para igual un Array a Otro

Andrea Vargas@andreavargas

Estoy realizando una función que iguale un array a otro y que por salida me de el numero de movimientos que se hicieron para igual el array. Los array son los siguientes:

a = 1,2,3,4,4,3,2,1,

m = 2,3,4,5,3,2,1,4

el primero array lo separe en dos para que pudiera igualarlo más fácilmente al array m. Lo que no se es como sacar los movimientos necesarios para igual el y que me den 10 como explica el problema. Aquí mi código

let c = console.log function minimumMoves (a,b) {

for(var i=0; i < a.length; i++){

if ( ai % 2 === 0 ) { let a1 = ai++ c(a) c(a1)

} else if ( a[i] % 2 !== 0) {

    let a1 =  a[i]++
c(a)
c(a1)    

} }

for(var i=0; i < b.length; i++){

if ( b[i] % 2 === 0 ) {

b[i] -= 1
c(b)

} else if ( b[i] % 3 === 0 ) {

    b[i] -= 1
    c(b)   

} else if( b[i] === 1 ) {

b[i] += 3
c(b)

} } return a1 }

let a = new Array(1,2,3,4,4,3,2,1), a3 = a.slice(0,4), a4 = a.slice(4,8)

result = minimumMoves(a3, a4) c(result)


Crear una función que devuelva el numero de movimientos para que un array coincida con otro

Andrea Vargas@andreavargas

Buenos días comunidad. Espero todos se encuentren bien. Ante todo me disculpo por los varios post que he hecho publicando este problema pero no encuentro la opción para editar o eliminar los primeros que hice. Vengo a pedir su ayuda para resolver un problema que dicta lo siguiente:

Andrea and Maria each have an array of integers. Andrea wants to change her array to match Maria's. For each element of her array, she can increment or decrement one digit in one item in one move. How many moves will it take Andrea to match Maria's array?. No reording of the digits is allowed.

Adrea's = 123,543 and Maria's = 321,279

Function Description:

Create a function. The function must return the integer number of moves to convert Andrea's array to match Maria's


Pregunta a ChatEDT