password loginwithpassword learn currentuser create javascript facebook meteor meteor-accounts

javascript - loginwithpassword - Meteor 1.3+ Cuentas Facebook Login para iOS no funciona



meteor user id (4)

He estado tratando de encontrar una solución (lamentablemente desde hace 3 meses) para iniciar sesión con Facebook utilizando las cuentas de Meteors Facebook en iOS. He intentado casi todo lo que generaría una búsqueda en Google, contacté con los foros de Meteor e incluso abrí un problema con Github.

Pero este problema todavía se me escapa. Todo funciona bien en el escritorio, pero tan pronto como lo pruebo en el móvil, aparece un error de Facebook "No se ha iniciado sesión. No has iniciado sesión. Inicia sesión y vuelve a intentarlo" .

He encontrado varios otros con este problema y muy poca información sobre una respuesta de prueba completa. Y en este punto estoy empezando a desesperarme.

Esto no fue un problema hasta que Meteor subió a 1.3.


Aquí podría estar el problema en los problemas de GitHub

Según el author : parece que WKWebView en iOS 10 ya no aplica el CSP (default-src *) de Meteor Cordova a websockets y bloquea la conexión, con el siguiente mensaje. Esto rompe las aplicaciones de producción que hacen conexiones websocket (¿tal vez solo conexiones que no sean la conexión predeterminada con el servidor Meteor? No estoy seguro) cuando sus usuarios se actualizan a iOS 10 (que se ha lanzado).

El tema radica en la línea de código

<meta http-equiv="Content-Security-Policy" content="default-src * data: blob: ''unsafe-inline'' ''unsafe-eval'';">

Puedes intentar reemplazarlo por

<meta http-equiv="Content-Security-Policy" content="default-src * ''self'' data: blob: ''unsafe-inline'' ''unsafe-eval'' wss://*.ourdomain.tld ">

en el archivo https://github.com/meteor/meteor/blob/master/packages/boilerplate-generator/boilerplate_web.cordova.html

y luego actualice el Meteor 1.4 ejecutando el meteor update boilerplate-generator

También puede intentar actualizar la actualización de meteor update --release 1.4.2-beta.4 como se menciona en el enlace que

Este paquete se ejecuta durante el proceso de compilación y la actualización de este paquete a nivel de proyecto no cambiaría los archivos que se utilizan para compilar la aplicación.

También si todavía no funciona, entonces como lo sugiere este author

Puede agregar un complemento simple meteor add cordova:[email protected]

Repo está here y la página npm está here

Espero que esto ayude.

La atribución completa va al enlace de github y los autores mencionados anteriormente


He solucionado el mismo problema especificando la URL correcta en las "URI válidas de redireccionamiento de OAuth de la aplicación de Facebook".

Anteriormente, había especificado http://<domainname>/_oauth/facebook?close

que no funcionó. Después de un poco de depuración, encontré que la URL debería ser

http://<domainname>:<port>/_oauth/facebook?close (con número de puerto)

Entonces, en el caso de un servidor que se ejecute en http://localhost:3000 , sería http://<device ip/external ip>:3000/_oauth/facebook?close

Y, en caso de que esté ejecutando la aplicación con --server = http://www.domainname.com, entonces sería http://www.domainname:80/_oauth/facebook?close (puerto 80 para HTTP)

Ahora veo la página de inicio de sesión de la aplicación de Facebook y puedo iniciar sesión.

Pero ahora estoy atascado con el cierre del InAppBrowser después de la autenticación. Cualquier ayuda en este sentido sería genial!


Me funciona con la siguiente configuración.

  1. Última versión de Meteor y Xcode
  2. Cuentas relacionadas con paquetes de meteoros

    accounts-base accounts-password accounts-facebook accounts-google useraccounts:materialize service-configuration accounts-ui splendido:accounts-meld

  3. Renderizando la plantilla con

    {{> atForm}}

  4. También tengo 2 complementos de cordova agregados (para eso cree un archivo dentro de la carpeta .meteor con el nombre cordova-plugins y el siguiente contenido

    cordova-plugin-meteor-webapp@https://github.com/meteor/cordova-plugin-meteor-webapp.git#8bf95eed3f313299fc2de33658866278eea2cdc5 cordova-plugin-inappbrowser@https://github.com/apache/cordova-plugin-inappbrowser.git#2df0e72c36f1fda35c04b3b06bd7beaafaae6ee9

  5. También asegúrese de tener la siguiente línea en la etiqueta de la cabeza de su html

    <meta http-equiv="Content-Security-Policy" content="default-src * ''unsafe-inline'' ''unsafe-eval'' data: " />

  6. Finalmente agregue las siguientes líneas en su archivo mobile-config.js

    App.accessRule(''http://*'', {type: ''navigation''}); App.accessRule(''https://*'', {type: ''navigation''});

También ejecute un comando de meteor reset antes de construir


Para que esto me funcione, actualicé a la última versión de meteor, cuentas-facebook, etc.

A continuación, implementé una versión web de la aplicación con inicio de sesión de trabajo de Facebook. Luego probé la aplicación web de inicio de sesión de facebook. Todo bien una vez que se haya agregado la URI de redireccionamiento de oAut válido en la configuración de la aplicación de Facebook. Estos deberían ser algo como https://example.com

Luego corrí en terminal meteor run ios-device --settings settings.json --mobile-server https://example.com

Mi archivo mobile-config.js también contiene lo recomendado por @Afzal Hossain App.accessRule(''http://*'', {type: ''navigation''}); App.accessRule(''https://*'', {type: ''navigation''}); App.accessRule(''http://*'', {type: ''navigation''}); App.accessRule(''https://*'', {type: ''navigation''});

La aplicación puesta en mi dispositivo funcionó para iniciar sesión.

Ya no hay necesidad de complementos de cordova o políticas de CSP, ya que las actualizaciones de meteoros las han hecho innecesarias.