Facebook Unity自动登录

时间:2014-01-31 13:06:50

标签: facebook unity3d facebook-login autologin facebook-unity-sdk

好的,所以设法解决了这个问题,虽然我无法确定原因是什么,但我已经足够重写了我们的facebook连接类的初始化,登录和权限检查部分。我看不出与我们用于示例的流程有任何明显的区别,但显然有一些东西。无论如何,现在自动登录init似乎工作正常。

使用适用于Unity的Facebook插件的4.3.6版。注意到一点这个有点烦恼的错误。

用户登录并接受我们的权限后,游戏会继续并根据需要发布。但是,如果游戏关闭然后重新启动,则用户必须再次登录。

现在让我在这里说清楚,当我们再次启动时,我们当前没有调用登录功能,为什么?因为这会导致瞬间app切换看起来很可怕并且很刺耳。工具提示似乎表明Init应尝试使用有效的会话数据重新启动。但是在调用init函数之前和之后,Access令牌似乎都是空白的。因此没有自动登录。

我已尝试在设置对象中设置该状态标志为true,并通过init通过代码设置。似乎没有什么区别。

是否有一些我缺少的东西让这个工作?

这个官方插件是否有办法在没有应用交换的情况下获得自动登录?或者我只是在那个追逐梦想?

编辑:
只是提供一些额外的信息。目前在安装了facebook的iPhone5和iPad3上进行测试,其中一个使用通过iOS设置登录的facebook帐户,两者都遵循相同的行为,初始化没有会话恢复,初始化后登录导致应用交换。我将尝试在今天晚些时候用facebook示例测试一个空白项目,看看这是否是我们搞砸了或是否是它的插件。

2 个答案:

答案 0 :(得分:1)

我知道你已经解决了你的问题,但我认为这可能对其他人有用,因为我遇到了类似的问题。

FacebookSettings> FB.Init()参数>状态应设置为“true”。 Status属性的参考文档说:

  

如果为true,则尝试使用有效的会话数据初始化Facebook对象。

     
      
  • 注意:这通常需要异步读取操作,并且任何依赖于其完成的代码都应该在传递给Init()的HideUnityDelegate中同步。
  •   

也许这是文档中的一个错误,但我认为HideUnityDelegate实际上并没有使用Init()(调用Init时不会隐藏Unity)。但是,使用了InitDelegate,因此您可以将登录代码放在那里。

示例:

void Start() {
    FB.Init(OnInitComplete, OnHideUnity, null);
}

void OnInitComplete() {
    if (FB.IsLoggedIn) {
        Debug.Log("FB Logged in during Init");
    }
    else {
        Debug.Log("FB NOT Logged in during Init");
    }
}

void OnHideUnity(bool unityIsHidden) {
}

答案 1 :(得分:1)

当调用传递给FB.Init方法的OnInitComplete方法时,变量FB.IsLoggedIn尚未设置。添加0.5延迟后,它现在可以正确找到已登录的用户。 Dunno为什么在新版本上喜欢它,但它适用于我:)

相关问题