FB.Logout()在Facebook UnitySDK中不起作用

本文关键字:UnitySDK 不起作用 Facebook Logout FB | 更新日期: 2023-09-27 17:59:27

我使用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)

FB.Logout()在Facebook UnitySDK中不起作用

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

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

实际上FB.Logout()没有委托来让您知道帐户已成功注销,所以您必须创建自己的listner。

其次,它不会让你从实际设备Facebook应用程序或浏览器注销。如果你想使用不同的帐户登录,那么你可以从应用程序或浏览器中明确注销。

以下是在您注销时如何检测的代码。显示Facebook的"登录"answers"注销"按钮可能有助于确定何时登录或注销。

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

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