Facebook总是使用同一用户登录,即使我使用的是不同的用户

Facebook总是使用同一用户登录,即使我使用的是不同的用户,facebook,login,facebook-unity-sdk,Facebook,Login,Facebook Unity Sdk,我正在Unity中开发一款Android游戏,并使用Facebook SDK作为身份验证程序 在Unity中完成安装阶段后,我尝试登录,结果成功了。我用来登录的用户是管理员用户,我也用来在developer.facebook.com上创建应用程序 后来我尝试与其他用户联系。他们是真正的帐户,具有开发人员和测试人员的角色,我甚至使用了由FB自动创建的测试用户,但尽管他们都有不同的凭据,但他们都以管理员用户的身份登录 为了说明这一点,我做了以下工作: 1) 在android上运行游戏 2) 点击登录

我正在Unity中开发一款Android游戏,并使用Facebook SDK作为身份验证程序

在Unity中完成安装阶段后,我尝试登录,结果成功了。我用来登录的用户是管理员用户,我也用来在developer.facebook.com上创建应用程序

后来我尝试与其他用户联系。他们是真正的帐户,具有开发人员和测试人员的角色,我甚至使用了由FB自动创建的测试用户,但尽管他们都有不同的凭据,但他们都以管理员用户的身份登录

为了说明这一点,我做了以下工作:

1) 在android上运行游戏

2) 点击登录按钮,FB应用程序将开始运行

3) 使用管理员用户登录

4) 现在,我与管理员用户登录

5) 关闭应用程序并从FB注销

6) 运行应用程序,这次使用用户B(开发人员、测试人员等)登录

7) 管理员用户将再次代替用户B进行身份验证

编辑:今天我升级了FBSDK。在第一次尝试中,我与测试用户一起登录并正确登录。在以后的连接中,我使用了管理员和其他测试用户,但他们都作为第一个测试用户登录。我想问题不在于管理员用户,而在于第一次登录的那个用户

我用它作为我的游戏的例子,下面你可以找到我在我的应用程序中使用的代码块

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.");
    }
}

好的,我发现了问题

从Android Facebook应用程序注销不会将您从游戏中注销。另外,如果已经有登录的用户(这意味着FB.IsLoggedIn==true。正如您从我的代码中看到的,我删除了这个检查。最初这是在FB的教程中使用的),并且您调用FB.Login()这不会做任何事情。FB SDK保留上一个会话。我认为API必须警告开发者/用户“您正在切换用户”或“您在准备登录时不能重新登录”

所以我要做的是,在FB.Init(SetInit,OnHideUnity)的回调中调用FB.Logout():

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