2014-12-03 73 views
2

我正在使用官方的Unity Facebook SDK在我的游戏中开发“使用Facebook登录”支持。其实我使用的是beta版本6.1(但这个问题也在稳定版本6.0中)。Unity Facebook SDK不保存以前的登录会话

用户可以成功登录,然后我可以制作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保存有效的会话?

提前致谢!

+0

在这方面的成功吗?我有同样的问题。 – 2014-12-11 01:10:28

+0

嗨,瑞恩,是的!我的问题是,我希望Facebook将会话保存在编辑器中,否则不会。 尝试在特定平台上进行测试,并确保您在用户登录时收到视觉反馈。在我之前的示例中,即尝试在'UserCallback'方法中禁用fb登录按钮。 – Arol 2014-12-12 08:54:02

+0

谢谢Arol。我部署到iPad,并按预期工作。太糟糕了,它在编辑器中也不起作用。 – 2014-12-13 16:02:58

回答

1

我的问题是,我希望Facebook在编辑器上保存会话,当没有。

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

希望它可以帮助你!

0

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

PlayerPrefs.SetString("ISFACEBOOK", true); 

最后我在FB.Init()增加了一个小的检查,以检查编辑器具有一个关键。

私人无效InitCallback() { 如果(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。

希望这可以帮助你。