FB.Logout()无法在Facebook UnitySDK中运行

时间:2014-04-23 12:41:24

标签: c# facebook authentication unity3d facebook-unity-sdk

我已成功使用FB.Login功能成功登录FB。现在我想退出:

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

我希望上面的代码将FB.IsLoggedIn的值打印为false,并在下一个FB.Login上询问我的登录名和密码。

实际上FB.IsLoggedIn的值是真的并且我没有被注销:下一次调用FB.Login不会要求输入密码而且当我打开我的facebook网站时我没有被注销浏览器。

我还试图将未记录的请求用于https://www.facebook.com/logout.php?next=[YourAppURL]&access_token=[ValidAccessToken],但这对我没有任何影响。

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

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

也许我会以某种方式使访问令牌无效,这会导致FB再次询问我的登录名和密码?

非常感谢任何帮助。

SDK版本:5.0.1

构建版本:140401.725cc2ecbc9002a

Unity版本4.3.3f1(c8ca9b6b9936)

3 个答案:

答案 0 :(得分:0)

我相信FB.Logout操作是异步的,FB.IsLoggedIn的值在调用FB.Logout()后立即为true。 If you look at the documentation,它说:

  

您几乎肯定不应该使用此功能   主要是为了完整性。在游戏中具有注销控制权   执行Facebook范围的注销将违反用户的期望。   相反,允许用户控制他们在Facebook上的登录状态   本身。

答案 1 :(得分:0)

实际上FB.Logout()没有代表让你知道帐号已成功注销,所以你必须创建自己的列表。

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

以下是如果您已注销,如何检测该代码的代码。显示登录或退出时登录和退出按钮可能很有用。

以下是您可以确定用户已在游戏中注销的代码。

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

答案 2 :(得分:0)

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



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