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操作是异步的,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");
}