繁体   English   中英

Facebook Unity自动登录

[英]Facebook Unity Auto Login

好的,所以设法解决了这个问题,尽管我不能确定原因是什么,但我已经足够重写了我们Facebook连接类的init,login和权限检查部分。 与以前的流程相比,我看不到任何明显的区别,但显然有一些区别。 无论如何,现在在init上自动登录似乎可以正常工作。

将Facebook插件的4.3.6版本用于Unity。 注意一点错误,此刻有点烦人。

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

现在让我澄清一下,当我们再次启动时,我们当前未调用登录功能,为什么? 因为这会导致瞬间的应用程序切换看起来很可怕而且很刺耳。 工具提示似乎建议Init应该尝试使用有效的会话数据重新启动。 但是,在调用该init函数之前和之后,访问令牌似乎为空。 因此,不会发生自动登录。

我尝试在设置对象中以及通过代码通过init将状态标志设置为true。 两者似乎都没有影响。

有什么我想让这个工作吗?

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

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

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

FacebookSettings> FB.Init()参数> Status应该设置为“ 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) {
}

事实证明,当调用传递到FB.Init方法的OnInitComplete方法时,尚未设置变量FB.IsLoggedIn。 在添加0.5延迟后,它现在可以正确找到已登录的用户。 邓诺(Dunno)为什么在更新的版本上会这样,但对我有用:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM