Unity Facebook SDK不保存以前的登录会话

时间:2014-12-03 11:41:34

标签: facebook unity3d facebook-unity-sdk

我正在使用官方Unity Facebook SDK在我的游戏中开发“使用Facebook登录”支持。实际上我正在使用beta版本6.1(但这个问题也出现在稳定版本6.0中)。

用户可以成功登录,然后我可以发出FB api请求。问题是FB SDK没有保存会话,因为当您关闭应用并再次启动它时,FB.IsLoggedIn值为false

它不适用于任何平台:编辑器,iOS和&机器人。

注意: Facebook设置中的Status属性已经过检查。

以下是我实施它的方式:

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保存有效会话?

提前致谢!

2 个答案:

答案 0 :(得分:1)

我的问题是我希望facebook能够在编辑器上保存会话,而不是。

当您将其构建到设备中时,FB SDK会成功记住上一个有效会话。在我的例子中,我的错误是我没有向用户界面提供反馈。 FB.IsLoggedIn返回true,但我通过更改UserCallBack方法中FB登录按钮的状态来解决它。

希望它可以帮到你!

答案 1 :(得分:0)

我的登录系统存在同样的问题。然而<当用户点击"使用Facebook"登录时,我解决了调用相同功能的问题。然后我在Unity编辑器的字典中保存了一个变量,知道这是一个Facebook登录:

PlayerPrefs.SetString("ISFACEBOOK", true);

最后,我在FB.Init()中添加了一个小支票,以检查编辑器是否有该键。

private 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。

希望这会对你有所帮助。