Unity Facebook SDK无法保存先前的登录会话

4
我正在使用官方Unity Facebook SDK,开发我游戏中的“使用Facebook登录”功能。实际上,我正在使用beta版本6.1(但这个问题也存在于稳定版本6.0中)。
用户可以成功登录,然后我可以进行FB API请求。问题在于FB SDK没有保存会话,因此当您关闭应用程序并再次启动时,FB.IsLoggedIn值为false
它在任何平台上都不起作用:编辑器、iOS和Android。
注意:Facebook设置中的状态属性已经被选中了。
下面是我的实现方式:
FacebookController.cs
void Awake()
{
    if (instance == null)
    {
        DontDestroyOnLoad(gameObject);
        instance = this;

        FB.Init(OnFacebookInit);
    } else if (instance != this)
    {
        Destroy(gameObject);
    }
}

void OnFacebookInit()
{
    if (FB.IsLoggedIn)
    {
        FBIsLoggedIn();
    }
}

public void LoginWithFacebook(OnUserAuthenticated _userAuthCallback)
{
    userAuthCallback = _userAuthCallback;
    FB.Login("email, user_friends", AuthCallback);
}

void AuthCallback(FBResult result)
{
    if (FB.IsLoggedIn)
    {
        FBIsLoggedIn();
    } else
    {
        Debug.Log("User cancelled login");
    }
}

void FBIsLoggedIn()
{
    FB.API("me", Facebook.HttpMethod.GET, UserCallBack);
    FB.API("me/friends", Facebook.HttpMethod.GET, FriendsCallback);
}

我需要添加一些代码才能使FB保存有效的会话吗?

提前感谢!


这个问题有解决方案了吗?我也遇到了同样的问题。 - Ryan H.
嗨,Ryan,是的!我的问题在于我期望Facebook在编辑器上保存会话,但实际上它并没有这样做。尝试在特定平台上进行测试,并确保您收到用户登录时的视觉反馈。在我的先前示例中,即在“UserCallback”方法中尝试禁用FB登录按钮。 - Arol
谢谢Arol。我已经部署到iPad上了,按预期运行。可惜在编辑器中却无法工作。 - Ryan H.
2个回答

1
我的问题是我期望Facebook在编辑器中保存会话,但实际上它并没有这样做。
当你将其构建到设备中时,FB SDK会成功记住最后一个有效的会话。在我的例子中,我的错误在于我没有向用户界面提供反馈。 FB.IsLoggedIn 返回true,但我通过在我的UserCallBack方法中更改FB登录按钮的状态来解决了这个问题。
希望这能帮助你!

0

我在我的登录系统中遇到了同样的问题。然而,我通过在用户点击“使用Facebook登录”时调用相同的函数来解决它。然后,我在Unity编辑器的字典中保存了一个变量,以便知道这是一个Facebook登录:

PlayerPrefs.SetString("ISFACEBOOK", true);

最后我在FB.Init()中添加了一个小检查,以检查编辑器是否具有该密钥。
私有void InitCallback() { if(FB.IsInitialized){ FB.ActivateApp(); Debug.Log("[Initcallback] activateApp"); } }
        if (true == PlayerPrefs.HasKey("ISFACEBOOK") {
            //normal login
            FacebookLoginButton();
        }
    } 
    else 
    {
        SetMessage("Failed to Initialize the Facebook SDK");
    }

如果用户注销,我会从编辑器中删除该变量。
我知道这是解决问题的一种简单方法,但Facebbok API要求调用FB.LogInWithPublishPermissions或FB.LogInWithReadPermissions之一。
希望这可以帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接