FB.Logout()在UnitySDK中不工作

我已经成功地使用FB.LoginfunctionloginFB。 现在我想注销:

 FB.Logout(); Debug.Log("FB IS LOGGED IN " + FB.IsLoggedIn); 

我期待上面的代码打印FB.IsLoggedIn的值为false,并要求我在下一个FB.Login的login名和密码。

实际上, FB.IsLoggedIn的值是真的,我没有被注销: FB.Login下一个调用不要求密码,当我在浏览器中打开Facebook网站时,我没有被注销。

我也尝试使用未logging的请求来https://www.facebook.com/logout.php?next=[YourAppURL]&access_token=[ValidAccessToken]但它对我没有任何影响。

如何在独立的统一应用程序中将用户从Facebook中注销?

实际上我需要的是用不同的login名和密码login。

也许我可以使访问令牌无效,这将导致FB再次要求我的login名和密码?

任何帮助深表感谢。

SDK版本:5.0.1

生成版本:140401.725cc2ecbc9002a

Unity版本4.3.3f1(c8ca9b6b9936)

我相信FB.Logout操作是asynchronous的,在调用FB.Logout()之后,FB.IsLoggedIn的值将立即为真。 如果你看文档 ,它会说:

你几乎可以肯定不应该使用这个函数,主要是为了完整性。 在执行Facebook全部注销的游戏中拥有注销控制将违反用户的期望。 相反,允许用户在Facebook上控制自己的login状态。

其实FB.Logout()没有委托让你知道帐户已经成功注销,所以你必须创build自己的列表。

其次,它不会从实际的设备Facebook应用程序或浏览器签名。 如果您想使用其他帐户login,则可以通过从应用或浏览器中明确注销来完成。

这里是如何检测,如果你注销的代码。 显示Facebook的login和注销button可能有助于login或注销。

这里是你可以确定用户在游戏中注销的代码。

 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 (); } } 

我不确定是否正确,但为什么不做一些while循环?

 IEnumerator FBLogout (){ FB.Logout (); while (FB.IsLoggedIn){ print ("Logging Out"); yield return null; } print ("Logout Successful"); }