2014-09-02 3 views
0

유니티에서 안드로이드 게임을 개발 중이며 페이스 북 SDK를 인증 자로 사용하고 있습니다.페이스 북은 항상 다른 사용자를 사용하고 있어도 동일한 사용자로 로그인합니다.

Unity에서 설치 단계를 완료 한 후 로그인을 시도했는데 성공했습니다. 내가 로그인하는 데 사용하는 사용자는 developer.facebook.com에서 앱을 만드는 데 사용 된 관리자 사용자입니다.

나중에 다른 사용자와 연결을 시도했습니다. 그것들은 개발자와 테스터의 역할을하는 실제 계정이었고 FB로 자동 생성 된 테스트 사용자도 사용했습니다. 그러나 모든 사용자가 다른 자격 증명을 가지고 있어도 관리자 사용자로 모두 기록되었습니다.

는 만들 분명히 나는 ​​다음과 같은 한 :

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. 내 코드에서 알 수 있듯이이 검사를 제거했습니다. 원래 FB의 자습서 friendsmash에서 사용됨) FB.Login()을 호출합니다. 아무것도하지 않는다. FB SDK는 이전 세션을 유지합니다. API는 개발자/사용자에게 "사용자 전환 중"또는 "이미 로그인 한 상태에서 다시 로그인 할 수 없음"을 경고해야한다고 생각합니다.

그래서 내가 FB.Init의 콜백 FB.Logout()를 호출한다 뭐하는 거지 (SetInit, OnHideUnity) :

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