2009-03-18 28 views
8

¿Cómo puedo desconectar a un usuario de mi sitio web de Facebook Connect, sin usar el botón de inicio de sesión de fb? Me gustaría hacerlo desde código subyacente (C#)?Cerrar sesión con facebook

Respuesta

10

Descubrí que solo había una opción para hacerlo desde Javascript por FB.logout(). Parece un poco raro que no haya API de codebehind para hacer lo mismo.

+6

se trasladó a FB.logout() – Oduvan

+1

Solicitó explícitamente un método del lado del servidor no por javascript – Korayem

+1

porque no hay uno –

0

Al menos en la API hay un método de cierre de sesión. Con el fin de que funcione el método de cierre de sesión redirige al usuario a una URL en facebook.com y luego se vuelve a dirigir a su sitio

$ facebook-> cierre de sesión ("http://site.com/returnAfterLogout.php")

sin embargo he encontrado que en esa solicitud, la API de JavaScript aún cree que el php api todavía piensa que está conectado y hasta que intente hacer una solicitud de API, generará una excepción.

+0

Esta era una pregunta relacionada con la versión .Net de facebook api, y no php. – Dofs

3

Puede hacerlo fácilmente desde una instancia de la clase facebook.API (facebook.dll). Simplemente llame _api.LogOff()

+1

¿De qué clase de API de facebook estás hablando? Supongo que es una de las muchas bibliotecas antiguas que no usan la API de oAuth 2.0. el último no tiene método logOff: http://developers.facebook.com/blog/post/395 – jaminto

2

Mi experiencia dolorosa me mostró que usted DEBE tener un retorno (falso); después de FB.Connect.logout(); llamar como en:

FB.Connect.logout (doOnUserLogout()); falso retorno);

De lo contrario, parecerá que está cerrando sesión, con el cuadro de diálogo modal que así lo indica, pero no cerrará la sesión del usuario.

Descubrí esto por casualidad, ya que tampoco estaba documentado.

+2

Supongo que está llamando a este método desde dentro de un botón/enlace? Si ese es el caso, es por eso que se requiere el "retorno falso". No falta en la documentación de Facebook: si desea evitar que se ejecute la acción predeterminada de un enlace/botón (por ejemplo, la href), tendrá que devolver el mensaje falso, de lo contrario, navegará antes de que finalice su controlador onclick. –

2

Parece que ConnectSession no tiene ningún código en Logout methd. Es solo

void Logout(){ } 

sin nada. mismo para Login(){}

así que básicamente tendrá que utilizar la versión Java-script

1

¿No es posible con el enrollamiento y algo así como preg_match ("/ a href = \" \/logout.php (*. ?) \ "/", $ page, $ logout_param);

entonces ...

curl_setopt (. $ Ch, CURLOPT_URL, 'http://m.facebook.com/logout.php' $ logout_param [1]); curl_exec ($ ch);

??

0

yo estaba haciendo esto en una vista Web usando:

webview.loadUrl("http://www.facebook.com/logout.php?confirm=1"); 
+0

esto no funciona para mí, ni siquiera funciona a través de un navegador para mí. – pho0

7

Si lo que desea es un simple enlace a la sesión del usuario, se puede formar una URL como esta:

https://www.facebook.com/logout.php?access_token=ACCESS_TOKEN&confirm=1&next=REDIRECT

Simplemente reemplace ACCESS_TOKEN y REDIRECT con los valores apropiados. Facebook cambia esto de vez en cuando, por lo que debes tener cuidado con eso. Esto solo funciona en el navegador, pero lo bueno de hacerlo de esta manera es que el usuario no tiene que esperar a que se cargue la biblioteca de JavaScript.

Cuestiones relacionadas