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



我正在使用官方Unity Facebook SDK在我的游戏中开发"使用Facebook登录"支持。实际上我使用的是测试版 6.1(但这个问题也在稳定版 6.0 中)。

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

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

注意: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保存有效会话吗?

提前感谢!

我的问题是我希望Facebook将会话保存在编辑器上,而事实并非如此。

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

希望对您有所帮助!

我的登录系统也有同样的问题。但是<当用户单击"使用>

PlayerPrefs.SetString("ISFACEBOOK", true);

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

私有 void 初始化回调 () { 如果(FB.已初始化) { FB.激活应用(); 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.

希望这对你有帮助。

最新更新