我已成功使用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)
答案 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");
}