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.
- Última versión de Meteor y Xcode
Cuentas relacionadas con paquetes de meteoros
accounts-base accounts-password accounts-facebook accounts-google useraccounts:materialize service-configuration accounts-ui splendido:accounts-meld
Renderizando la plantilla con
{{> atForm}}
También tengo 2 complementos de cordova agregados (para eso cree un archivo dentro de la carpeta
.meteor
con el nombrecordova-plugins
y el siguiente contenidocordova-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
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: " />
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.