2011-02-04 15 views
5

estoy trabajando en PhoneGap y tienen un FBConnect. Usando childBrowser y el blog'http: //www.pushittolive.com/post/1239874936/facebook-login-on-iphone-phonegap ', he iniciado sesión en la aplicación. Pero no pude desconectarme de la aplicación. Se inicia automáticamente cada vez que inicio sesión.LogOut de Facebook usando childBrowser y PhoneGap en IPhone

¿Alguien puede decirme cómo desconectarme del FBConnect usando Childbrowsern PhoneGap?

Respuesta

9

probar esto.

Añadir esta función a ChildBrowserCommand.m

-(void) deleteCookies:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options{ 
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
    for (NSHTTPCookie *each in [cookieStorage cookies]) { 
      [cookieStorage deleteCookie:each]; 
    } 
} 

Añadir esto a Childbrowser.js

ChildBrowser.prototype.LogOut = function() 
{ 
    PhoneGap.exec("ChildBrowserCommand.deleteCookies"); 
} 

añadir esto a FBConnect.js

FBConnect.prototype.Logout = function() 
{ 
    window.plugins.childBrowser.LogOut();  
} 

En su página de añadir este código para cerrar la sesión al hacer clic en

function Logout() 
{ 
    var fb=FBConnect.install(); 
    fb.Logout(); 
} 

disfrutar.

+0

Estaba usando este método porque parecía funcionar, pero ahora me di cuenta de que solo funciona mientras la aplicación se está ejecutando. Una vez que finalice y vuelva a abrir la aplicación, las cookies "reaparecerán". ¿Hay alguna forma de eliminar realmente las cookies para siempre? –

+0

Muy buena solución. Asegúrese de incluir todos los corchetes de cierre} en cada una de las funciones anteriores. ¡Gracias! –

+0

gracias Mohamed – Henry

4

mejor manera de saber facebook cerrar la sesión.

se puede hacer mediante la apertura debajo de la URL en el navegador niño:

"https://www.facebook.com/logout.php?next="+your_site_url_registered _on_fb+"&access_token="+accessToken 
+2

esto me redirige a la página de inicio de Facebook. no cierra la sesión –

0

he luchado con este problema durante mucho tiempo. Puede haber iniciado sesión en Facebook, pero es posible que no tenga el token de acceso, por lo que el logot convencional no funcionará.

Por cierto, aquí se explica cómo forzar el cierre de sesión de Facebook sin token de acceso.

<!DOCTYPE html> 
<html xmlns:fb="https://www.facebook.com/2008/fbml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <title>Force facebook logout without access token</title> 
</head> 
<body> 
    <h3>Please wait while we redirect kick you out from Facebook...</h3> 
    <div id="status"></div> 
    <div id="fb-root"></div> 
    <script type="text/javascript"> 
     function spitInfo(message) { 
      var infoDiv = document.getElementById("status"); 
      infoDiv.innerHTML += message; 
      infoDiv.innerHTML += "<br/>"; 
     } 

     window.fbAsyncInit = function() { 
      spitInfo("called asyncInit"); 

      FB.init({ 
       appId: '496676837086475', //change the appId to your appId 
       status: true, 
       cookie: true, 
       xfbml: true, 
       oauth: true 
      }); 


      function forceLogOut(response) { 
       if (response.authResponse) { 

        FB.logout(function (response) { 
         spitInfo("FB.logout caller - you are logged out"); 
        }); 
       } else { 
        spitInfo("Already logged out"); 
       } 
      } 

      // run once with current status and whenever the status changes 
      FB.getLoginStatus(forceLogOut); 
      FB.Event.subscribe('auth.statusChange', forceLogOut); 
     }; 
     (function() { 
      var e = document.createElement('script'); 
      e.async = true; 
      e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; 
      document.getElementById('fb-root').appendChild(e); 
     }()); 
    </script> 
</body> 
</html> 
Cuestiones relacionadas