Facebook 统一 SDK, "FB.Init() has already been called"

标签 facebook unity-game-engine facebook-unity-sdk

我正在使用 FB Unity SDK,我面临的一个持续问题是检查 FB.Init() 是否已被调用。

场景:

  1. 有一个 fb 连接按钮,用户点击它。
  2. 如果用户决定取消对话框并点击“Facebook 再次连接”

FB sdk 抛出一条通知,提示“FB.Init() 已被调用。您只需调用一次。”

这是我想做的,但不起作用

    if(FB.AccessToken=="" || FB.AccessToken==null){
        Debug.Log ("Fb not init(), call it");
        FB.Init(OnInitComplete, null);
    }else{
        Debug.Log ("Facebook already init()");
        OnInitComplete();           
    }

但是,显然这不起作用,因为调用了 FB.Init() 并且用户取消了它。我如何验证 FB.Init() 是否已被调用?但我期望 accessToken 为空?

而且,这些消息会影响应用程序的提交吗?它们会显示在生产版本中吗?

最佳答案

FB.Init() 不应被多次调用。这是设计使然(因为它会在 Unity 中启动 Facebook GameObjects 等)。相反,请执行以下操作:

FB.Init(MyOnInitComplete);

....

public void MyOnInitComplete() {
    // FB.IsLoggedIn checks for the FB.AccessToken and the FB.UserId
    if(!FB.IsLoggedIn){
        // FB.Init() is called, but user is still not logged in.
        FB.Login("<your_permissions_here>");
    } else {
        // User is logged in & FB.Init is called       
    }
}

关于Facebook 统一 SDK, "FB.Init() has already been called",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19488614/

相关文章:

c# - "Expecting property name enclosed in double quotes"运行代理场景时

android - 错误 : The prefix "tools" for attribute "tools:overrideLibrary" associated with an element type "uses-sdk" is not bound

android - 将 Facebook 插件与 Unity 一起使用时出现 ActivityNotFoundException

android - Facebook Unity SDK,如何使用 webview 而不是 FB App 强制登录

css - facebook facepile iframe 的样式布局

iOS:为什么 Facebook 注销按钮显示不正确?

facebook - 使用 react-native facebook SDK 获取用户应用 token

ruby-on-rails - Ruby on Rails - 未定义方法 `persisted?' for nil :NilClass

android - Google Play Games y GoogleMobileAds 不能在 Unity 5 中协同工作

android - 无论我做什么,Unity Android 构建在 Gradle 阶段都会失败