2014-09-02 4 views
0

Я разрабатываю Android-игру в Unity и использую Facebook SDK в качестве аутентификатора.Facebook всегда входит в систему с одним и тем же пользователем, хотя я пользуюсь разными пользователями.

После завершения фазы настройки в Unity я попытался войти в систему, и это сработало. Пользователь, которого я использовал для входа, был пользователем admin, который я также использовал для создания приложения на сайте developer.facebook.com.

Позже я попытался соединиться с другими пользователями. Они были реальными учетными записями, которые имеют роли разработчика и тестировщика, я даже использовал тестовых пользователей, которые автоматически создаются FB, но даже при том, что все они имеют разные учетные данные, которые они регистрировали как пользователь admin.

, чтобы понять, я сделал следующее:

1) Запустить игру на андроид.

2) Нажмите кнопку входа в систему, и приложение FB начнет работать.

3) Войти с пользователем администратора.

4) Теперь я вошел в систему с пользователем администратора.

5) Закрыть приложение и выйти из FB.

6) Запустите приложение и на этот раз вход в систему с пользователем B (Дев, тестер и т.д.)

7) Вместо пользователя B снова админ пользователь будет аутентифицировать.

Редактировать: Сегодня я обновил FB sdk. Сначала я зарегистрировался с тестовым пользователем и вошел в систему правильно. При более поздних подключениях я использовал Admin и других тестовых пользователей, но все они вошли в систему в качестве первого тестового пользователя. Я думаю, проблема не связана с пользователем-администратором, а с тем, что первый вход в систему.

В качестве примера для моей игры я использовал friendsmash tutorial, а ниже вы можете найти фрагмент кода, который я использовал в своем приложении.

public void Init() { 
    FB.Init(SetInit, OnHideUnity);   
} 

private void SetInit() {  
    enabled = true; 
} 

private void OnHideUnity(bool isGameShown) { 
    Debug.Log("OnHideUnity"); 
    if(!isGameShown) { 
     // pause the game - we will need to hide 
     Time.timeScale = 0; 
    } 
    else { 
     // start the game back up - we're getting focus again 
     Time.timeScale = 1; 
    } 
} 

public void FBLogin(LoginOnSuccess cb) {  
    loginOnSuccess = cb; 
    FB.Login("user_friends", LoginCallback);   
} 

void LoginCallback(FBResult result) { 
    if(FB.IsLoggedIn) {    
     FB.API("/me?fields=id,name", Facebook.HttpMethod.GET, delegate (FBResult response) { 
      if(response.Error != null) { 
       Debug.Log("Error: FB.API: /me?fields=id,name"); 
      } 
      Debug.Log("Permissions: " + response.Text); 
     }); 
    } 
    else { 
     //TODO login failed. Give a proper error message on gui 
     Debug.Log("FacebookController.cs: Couldn't connect to FB."); 
    } 
} 

ответ

0

Хорошо, я нашел проблему.

Выйти из приложения Android Facebook не выйдет из игры. Также, если пользователь уже зарегистрировался (это означает, что FB.IsLoggedIn == true. Как вы можете видеть из моего кода, я удалил эту проверку. Первоначально это используется в friendsmash учебнике FB), и вы вызываете FB.Login() this ничего не делает. FB SDK сохраняет предыдущий сеанс. Я думаю, что API должен предупредить разработчика/пользователя, что «вы переключаете пользователя» или «вы не можете переустановить, пока вы уже зарегистрированы».

Так что я делаю, вызывая FB.Logout() в функции обратного вызова из FB.Init (SetInit, OnHideUnity):

private void SetInit() {  
    enabled = true; 
    FB.Logout(); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^