How to login in my app with facebook with URL http: //?

¿Cual seria el directorio actual cuando executa el programa?

“.” se refiere al directorio actual, entonces es importante saber si el directorio actual es C:\Users\victor\CURSOS\JAVASCRIPT-NODE\PROYECTO-MICHAELGRAM\michaelgram u otro directorio. (Por ejemplo, si el directorio actual es C:\Users\victor\CURSOS\JAVASCRIPT-NODE\PROYECTO-MICHAELGRAM, necessita referir a los archivos como ./michaelgram/unix/private.key y ./michaelgram/unix/publico.cert, no solo ./unix/private.key y ./unix/publico.cert.)

1 Like

El directorio es C:\Users\victor\CURSOS\JAVASCRIPT-NODE\PROYECTO-MICHAELGRAM\michaelgram,
michaelgram es el proyecto donde corro el server.js

He conseguido levantar el servidor (http://michaelgram.test:5050) de la siguiente manera, poniendo las llaves en la raiz del proyecto y el siguiente codigo.
Pero con https:// que es lo que necesito, no se levanta, por lo que no hice nada con las llaves,…

var options = {
  key: fs.readFileSync('./ssl/cert.pem'),
  cert: fs.readFileSync('./ssl/server.crt')
};

http.createServer(app).listen(80);
https.createServer(options, app).listen(443);```

Para confirmar, ¿puede imprimir la siguiente?

require("process").cwd()

¿De donde viene el número de puerta 5050?

1 Like

λ “require” no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable.

¿En Node o en su shell? (Yo queria ver eso en Node.)

Probe en Node.js command prom y en Cmder y los dos devuelven los mismo
echo require("process").cwd() Asi o devuelve nada

Debería estar sin "echo". Pero pensé en hacerlo adentro de su programa, como parte de su código...

1 Like

Ok de devuelve :“require” no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.

Creo que eso es un error del Windows shell y no de Node.

1 Like

Bueno, pues ya no se que mas hacer…
en powershell me devuelve:

Error en la invocación del método porque [System.String] no contiene ningún método llamado 'cwd'.
En línea: 1 Carácter: 1
+ require("process").cwd()
+ ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound```

No, es código Javascript para executar en Node. Pero ya no es lo mas importante. Lo mas importante es:

De : let port = process.env.PORT || 5050;
Probe a habilitar el pueto de la siguiente manera, pero me da error y no levanta el servidor.

https.createServer(options, app).listen(5050);```

He cambiado alguna configuracion y arranca la aplicacion con https.
Pero me pone como no segura, el certificado no funciona.
Y facebook no me deja hacer login.
[Captura](http://prntscr.com/jork59)

Pero eso resulta del código:

app.listen(port, function (err) {
if (err) return console.log(‘Hubo un error’), process.exit(1);

console.log(‘Michaelgram escuchando en el puerto 5050’);
}

No existe nada correspondiente para escuchar con HTTPS (ni en ninguna puerta aparte de 5050). Para escuchar en otra puetra, necesita código para hacerlo. Este código encima solo escucha (1) en puerta 5050, (2) sin HTTPS.

Mi colega @jsha recientemente sugerió el uso de un proxy nginx para desarrolladores de aplicaciones web con ambientes tales como Node y Java. El proxy nginx puede recebir las conexiones y hacer todo con los certificados y HTTPS, y la aplicación web puede solo escuchar en una determinada puerta en localhost, recibiendo conexiones con una directiva proxy_pass. Muchas vezes, eso parece mas fácil que configurar un certificado adentro de la aplicación, entre otras cosas porque existen muchas herriamentas para configurar certificados en nginx.

Elimine esas lineas:

app.listen(port, function (err) {
  if (err) return console.log('Hubo un error'), process.exit(1);

  console.log('Michaelgram escuchando en el puerto 5050');
})

y ahora tengo:

  key: fs.readFileSync('./ssl/cert.pem'),
  cert: fs.readFileSync('./ssl/server.crt')
};

http.createServer(app).listen(80);
https.createServer(options, app).listen(443);

La aplicación arranca, pero el certificado no vale y marca “como no segura”

Tachando “https” y poniendo el signo de triángulo de advertencia.
El certificado no funciona.

Entrando el la parte de advertencia de la barra de navegación, donde marcan las cookies, me dice que el certificado que instale no es valido.

¿Qué es el nombre para lo cual se emitió el certificado? No debería ser michaelgram.test (porque no se les permite a las autoridades de certificación públicas emitir certificados para dominios en ".test").

En teoria debe ser para localhost, me lo proporcionó un compañero que intentó ayudarme.

En este caso tiene que acessar el sitio como "https://localhost/", no "https://michaelgram.test/". Es importante acessar el sitio usando el mismo nombre que aparece en el certificado.

Entonces no es un certificado de una AC pública como Let's Encrypt.

Como consigo uno de Let’s Encrypt. , yo pensaba que no soportaba Node.js
Porque accediendo con https://localhost me abre la aplicacion pero me marca como “NO SEGURA” tambien

Su amigo no podia tener conseguido un certificado para localhost que su navegador acepta sin nada mas. Pero son dos razones diferentes para no aceptarlo:

(1) Si acessa el sitio con un nombre que no aparece en el certificado, el navegador no acepta el certificado porque el otro nombre es el sujeto del certificado. (El certificado no se refiere al otro nombre.)

(2) Si acessa el sitio con el nombre localhost, el navegador nota que el certificado no fue emitido por una autoridad de certificación ya presente en la lista de ACs públicas confiables. Tendría que criar una excepción para aceptarlo.

¿Cómo no?

1 Like