【问题标题】:How to Logout from Facebook and switch a user?如何从 Facebook 注销并切换用户?
【发布时间】:2018-10-25 20:33:06
【问题描述】:

我使用我的应用程序上的用户登录了 facebook。

稍后当我在我的 Facebook 应用和浏览器上手动注销此用户时,

(FB.IsLoggedIn) 仍然返回 true。 由于某种原因,旧的个人资料已保存,我无法使用新用户登录

这是我的代码:

public void FacebookLogin()
{
    if (FB.IsLoggedIn)
        FB.LogOut();  //it doesn't work, user is still logged in


     var permissions = new List<string>() {"email"};
      FB.LogInWithReadPermissions(permissions);  //trying to login a new user, but the last user is still logged in

【问题讨论】:

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


    【解决方案1】:

    将您的 FacebookLogin 函数更改为协程函数。通过这样做,您可以检查用户是否已登录,注销用户然后等待每一帧直到FB.IsLoggedInfalse,然后您才能登录另一个用户。还要在等待中添加一个计时器,这样当FB.IsLoggedInx 时间内永远不会是false 时,该函数将不会继续运行但会显示一些错误并退出。

    public IEnumerator FacebookLogin()
    {
        //5 seconds loggout time
        float waitTimeOut = 5f;
    
        //Log out if loggedin
        if (FB.IsLoggedIn)
            FB.LogOut();  //it doesn't work, user is still logged in
    
        //Wait until logout is done. Also add a timeout to the wait so that it doesnt wait forever
        float timer = 0;
        while (FB.IsLoggedIn)
        {
            if (timer > waitTimeOut)
            {
                Debug.LogError("Failed to log out within " + waitTimeOut + " seconds");
                yield break;
            }
            timer += Time.deltaTime;
            yield return null;
        }
        Debug.Log("Successfully logged out. Now logging another user in");
        var permissions = new List<string>() { "email" };
        FB.LogInWithReadPermissions(permissions);  //trying
    }
    

    如果您对此仍有疑问,您需要在facebook-sdk-for-unity Github 页面上提交错误报告,并附上此答案中的代码。

    【讨论】:

    • 你必须启动它而不是调用它,因为它是一个协程函数。 StartCoroutine(FacebookLogin());
    • 我不确定这是否是切换用户的正确解决方案。 1、真的每次登录都需要FB.LogOut()吗? (在我的示例中,我使用它是因为即使我从 facebook 应用程序手动注销并登录新用户,最后一个用户仍保持登录状态)。此外,通过阅读文档 - 在调用 FB.Logout() 后,FB.IsLoggedIn 将立即为真。所以while循环是不安全的
    • 23 小时以来,我一直在等待听到代码是否有效,但只得到 “不确定这样做是否正确” 评论。 1. 您无法在同一时间使用多个帐户登录我知道的任何网站。您必须先从一个帐户注销,然后才能从另一个帐户登录。 2. 我的回答中的FB.LogOut 函数只有在用户登录时才会被调用。3. 在文档中没有提到FB.IsLoggedIn 会调用FB.Logout() 后立即为真。提供了一个链接来证明这一点。 4. 你介意解释一下为什么while 循环不安全吗?
    • 嘿抱歉!只是和你分享我的想法——没必要生气。它基于这篇文章的 cmets:stackoverflow.com/questions/23244611/…
    • 我昨天确实测试了你的代码 - 它给了我一个错误。我不想用它来打扰你,因为我今天想自己解决它。现在,错误是因为在我的原始代码中LogInWithReadPermissions 之后 - 我打印了用户详细信息。但它不会打印它,因为我们必须添加到函数 WaitForSeconds 的末尾,所以我们在尝试任何事情之前确保我们已经登录。
    【解决方案2】:

    注销后您正在登录。

    public void FacebookLogin()
        {
                if (FB.IsLoggedIn)
                 {   
                  FB.LogOut();  //it doesn't work, user is still logged in
                  return;
                 }
                  var permissions = new List<string>() {"email"};
                  FB.LogInWithReadPermissions(permissions);  //t
        }
    

    【讨论】:

      猜你喜欢
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      • 2012-08-16
      • 1970-01-01
      相关资源
      最近更新 更多