c# - tools - FB.Logout() no funciona en Facebook UnitySDK
facebook sdk unity (3)
FB.Login
iniciar sesión exitosamente en FB usando la función FB.Login
. Ahora quiero desconectarme:
FB.Logout();
Debug.Log("FB IS LOGGED IN " + FB.IsLoggedIn);
Estoy esperando que el código anterior imprima el valor de FB.IsLoggedIn
como falso y que me pida un nombre de usuario y contraseña en el siguiente FB.Login
.
De hecho, el valor de FB.IsLoggedIn
es verdadero y no me estoy desconectando: la próxima llamada a FB.Login
no solicita una contraseña y no estoy desconectado cuando abro el sitio de Facebook en mi navegador.
También intenté usar la solicitud no documentada en https://www.facebook.com/logout.php?next=[YourAppURL]&access_token=[ValidAccessToken]
pero no tuvo ningún efecto para mí.
¿Cómo puedo desconectar al usuario de Facebook en mi aplicación de unidad independiente?
De hecho, lo que necesito es iniciar sesión con un nombre de usuario y contraseña diferentes.
¿Tal vez puedo invalidar el token de acceso de alguna manera lo que hará que el FB me pida nuevamente el inicio de sesión y la contraseña?
Cualquier ayuda es muy apreciada.
Versión SDK: 5.0.1
Versión de compilación: 140401.725cc2ecbc9002a
Unity versión 4.3.3f1 (c8ca9b6b9936)
Creo que la operación FB.Logout es asincrónica, y el valor de FB.IsLoggedIn sería verdadero inmediatamente después de llamar a FB.Logout (). Si miras la documentación , dice:
Es casi seguro que no deberías usar esta función, que se proporciona principalmente para completar. Tener un control de cierre de sesión dentro de un juego que ejecuta un cierre de sesión de todo Facebook violará las expectativas de los usuarios. En su lugar, permita a los usuarios controlar su estado de sesión en Facebook.
En realidad, FB.Logout () no tiene un delegado que le permita saber que la cuenta se desconectó con éxito, por lo que debe crear su propio listador.
En segundo lugar, no le cerrará la sesión desde la aplicación de Facebook del dispositivo real o el navegador. Si desea iniciar sesión con una cuenta diferente, puede hacerlo mediante la sesión explícita desde la aplicación o el navegador.
Aquí está el código de cómo detectar eso si está desconectado. Puede ser útil mostrar el botón Iniciar sesión y cerrar sesión en Facebook cuando se inicie o cierre sesión.
Aquí está el código del que puedes determinar que el usuario ha cerrado sesión en el Juego.
public void OnFacebookLogout()
{
if (FB.IsLoggedIn)
{
FB.Logout ();
StartCoroutine ("CheckForSuccussfulLogout");
}
}
IEnumerator CheckForSuccussfulLogout()
{
if (FB.IsLoggedIn)
{
yield return new WaitForSeconds (0.1f);
StartCoroutine ("CheckForSuccussfulLogout");
} else
{
// Here you have successfully logged out.
// Do whatever you want as I do, I just enabled Login Button and Disabled
// logout button through this method.
EnableFacebookLoginButton ();
}
}
No estoy seguro de si es correcto, pero ¿por qué no simplemente hacer un poco de bucle?
IEnumerator FBLogout (){
FB.Logout ();
while (FB.IsLoggedIn){
print ("Logging Out");
yield return null;
}
print ("Logout Successful");
}