sirve que para descargar javascript iphone ios facebook

que - descargar javascript para iphone



Facebook OAuth "No compatible" en Chrome en iOS (7)

Aquí hay una solución completa para su problema de FB JS Auth en Chrome iOS http://seanshadmand.com/2015/03/06/facebook-js-login-on-chrome-ios-workaround/

JS funciona para verificar la autenticación, abrir la página de autenticación de FB manualmente y actualizar los toques de autenticación en la página original una vez completa:

function openFBLoginDialogManually(){ // Open your auth window containing FB auth page // with forward URL to your Opened Window handler page (below) var redirect_uri = "&redirect_uri=" + ABSOLUTE_URI + "fbjscomplete"; var scope = "&scope=public_profile,email,user_friends"; var url = "https://www.facebook.com/dialog/oauth?client_id=" + FB_ID + redirect_uri + scope; // notice the lack of other param in window.open // for some reason the opener is set to null // and the opened window can NOT reference it // if params are passed. #Chrome iOS Bug window.open(url); } function fbCompleteLogin(){ FB.getLoginStatus(function(response) { // Calling this with the extra setting "true" forces // a non-cached request and updates the FB cache. // Since the auth login elsewhere validated the user // this update will now asyncronously mark the user as authed }, true); } function requireLogin(callback){ FB.getLoginStatus(function(response) { if (response.status != "connected"){ showLogin(); }else{ checkAuth(response.authResponse.accessToken, response.authResponse.userID, function(success){ // Check FB tokens against your API to make sure user is valid }); } }); }

Y el Opener Handler que FB auth reenvía y llama a una actualización a la página principal. Tenga en cuenta que window.open en Chrome iOS también tiene errores, así que llámelo correctamente como se indica arriba:

<html> <head> <script type="text/javascript"> function handleAuth(){ // once the window is open window.opener.fbCompleteLogin(); window.close(); } </script> <body onload="handleAuth();"> <p>. . . </p> </body> </head> </html>

La ventana emergente de Facebook OAuth arroja un error en Chrome solo en iOS. Ambos developers.facebook.com y google no han encontrado nada sobre esto. Ideas?


Así es como lo hice (arreglando iOS Chrome específicamente)

// fix iOS Chrome if( navigator.userAgent.match(''CriOS'') ) window.open(''https://www.facebook.com/dialog/oauth?client_id=''+appID+''&redirect_uri=''+ document.location.href +''&scope=email,public_profile'', '''', null); else FB.login(null, {scope: ''email,public_profile''});


Este es un problema muy común al que se han enfrentado todos los desarrolladores al implementar la función de inicio de sesión de FB. He probado la mayoría de las soluciones de Internet, pero ninguna de ellas funcionó. O bien window.opener no funciona en Chrome iOS o en algún momento el objeto FB no se carga mientras se usa /dialog/oauth .

¡Finalmente resolví esto solo después de probar todos los hacks!

function loginWithFacebook() { if( navigator.userAgent.match(''CriOS'') ) { var redirect_uri = document.location.href; if(redirect_uri.indexOf(''?'') !== -1) { redirect_uri += ''&back_from_fb=1''; } else { redirect_uri += ''?back_from_fb=1''; } var url = ''https://www.facebook.com/dialog/oauth?client_id=[app-id]&redirect_uri=''+redirect_uri+''&scope=email,public_profile''; var win = window.open(url, ''_self''); } else { FB.login(function(response) { checkLoginState(); }, { scope:''public_profile,email,user_friends,user_photos'' }); } }

Fíjate que arriba estoy pasando un parámetro adicional a la url de redirección para que una vez que se abra la nueva ventana con la URL de redirección anterior, pueda leer los valores y pueda decir que sí, esta llamada proviene de la ventana de iOS de Chrome. También asegúrese de que este código se ejecute en la carga de la página.

if (document.URL.indexOf(''back_from_fb=1'') != -1 && document.URL.indexOf(''code='') != -1) { pollingInterval = setInterval(function() { if(typeof FB != "undefined") { FB.getLoginStatus(function(response) {}, true); checkLoginState(); } else { alert("FB is not responding, Please try again!", function() { return true; }); } }, 1000); }


Mis 2 centavos sobre esto ya que ninguna de las respuestas fue clara para mí. Estoy disparando el cuadro de diálogo de inicio de sesión con un clic en el botón, por lo que ahora, cuando es Chrome, verifico primero si el usuario está conectado a Facebook y si no los envío a la ventana de inicio de sesión. El problema con esto es que los usuarios de chome ios necesitan hacer clic en el botón de conexión dos veces si no están conectados a Facebook. Si están registrados en Facebook basta con un clic.

$( ''body'' ).on( ''click'', ''.js-fbl'', function( e ) { e.preventDefault(); if( navigator.userAgent.match(''CriOS'') ) { // alert users they will need to click again, don''t use alert or popup will be blocked $(''<p class="fbl_error">MESSAGE HERE</p>'').insertAfter( $(this)); FB.getLoginStatus( handleResponse ); } else { // regular users simple login try { FB.login( handleResponse , { scope: fbl.scopes, return_scopes: true, auth_type: ''rerequest'' }); } catch (err) { $this.removeClass(''fbl-loading''); } } });

Ese pequeño código lo hace funcionar para usuarios de Chrome ios. En la respuesta de manejo, simplemente cuido la respuesta fb y la envío a mi sitio web para usuarios de inicio de sesión / registro.

var handleResponse = function( response ) { var $form_obj = window.fbl_button.parents(''.flp_wrapper'').find(''form'') || false, $redirect_to = $form_obj.find(''input[name="redirect_to"]'').val() || window.fbl_button.data(''redirect''); /** * If we get a successful authorization response we handle it */ if (response.status == ''connected'') { var fb_response = response; /** * Make an Ajax request to the "facebook_login" function * passing the params: username, fb_id and email. * * @note Not all users have user names, but all have email * @note Must set global to false to prevent gloabl ajax methods */ $.ajax({...}); } else { //if in first click user is not logged into their facebook we then show the login window window.fbl_button.removeClass(''fbl-loading''); if( navigator.userAgent.match(''CriOS'') ) window.open(''https://www.facebook.com/dialog/oauth?client_id='' + fbl.appId + ''&redirect_uri='' + document.location.href + ''&scope=email,public_profile'', '''', null); } };

¡Espero eso ayude!


No es una respuesta real, pero en base a este hilo vale la pena señalar que se comenzó a trabajar para nuestra aplicación, en Chrome cuando en el iPhone lo hicimos General>Reset>Reset Location & Privacy


Obtuve una solución para el inicio de sesión del sitio web de ios facebook en google chrome. En realidad, el problema fue con google chrome in ios cuando hacemos clic en el botón de inicio de sesión de Facebook, le damos null internamente a la ventana. Abra en ios Chrome.
Hay dos soluciones para verificar si es Chrome en ios (chrios) y luego generar una pantalla de inicio de sesión personalizada (aún no es posible que la corrijamos).
Segundo, lo que he usado. Es usar el inicio de sesión de Facebook desde el revés crear un hit de API que llene la pantalla de Facebook y luego cuando se inicie el acceso se redirigirá a su servidor desde donde se redirigirá a la página de su sitio web con los datos de Facebook.
Otra ventaja de esto es que crea un sitio web para el mismo propietario de un sitio web. No puede establecer dos URL de sitio web en la cuenta de desarrollador de Facebook. De esta manera, puede crear muchos sitios de inicio de sesión de Facebook con la misma aplicación de Facebook.


Puede usar el método de redirección como se muestra a continuación para este caso (al detectar que el agente de usuario es chrome ios):

https://www.facebook.com/dialog/oauth?client_id={app-id}&redirect_uri={redirect-uri}

Ver más información aquí https://developers.facebook.com/docs/facebook-login/login-flow-for-web-no-jssdk/

Observación: Personalmente uso el servidor OAuth en ese caso, pero esto debería ser el truco y es bastante simple