Измените свою функцию FacebookLogin
на функцию сопрограммы.Сделав это, вы можете проверить, вошел ли пользователь в систему, выйти из системы, а затем подождать каждый кадр, пока FB.IsLoggedIn
не станет false
, прежде чем вы сможете войти в систему другого пользователя.Также добавьте таймер к ожиданию, чтобы, когда FB.IsLoggedIn
никогда не было false
в течение x
времени, функция не продолжала работать, а показывала некоторую ошибку и завершала работу.
public IEnumerator FacebookLogin()
{
//5 seconds loggout time
float waitTimeOut = 5f;
//Log out if loggedin
if (FB.IsLoggedIn)
FB.LogOut(); //it doesn't work, user is still logged in
//Wait until logout is done. Also add a timeout to the wait so that it doesnt wait forever
float timer = 0;
while (FB.IsLoggedIn)
{
if (timer > waitTimeOut)
{
Debug.LogError("Failed to log out within " + waitTimeOut + " seconds");
yield break;
}
timer += Time.deltaTime;
yield return null;
}
Debug.Log("Successfully logged out. Now logging another user in");
var permissions = new List<string>() { "email" };
FB.LogInWithReadPermissions(permissions); //trying
}
Если у вас все еще есть проблема с этим, вам нужно подать отчет об ошибке на странице facebook-sdk-for-unity Github с кодом в этом ответе.