【问题标题】:Facebook unity SDK, "FB.Init() has already been called"Facebook unity SDK,“FB.Init() 已被调用”
【发布时间】:2013-10-21 07:34:49
【问题描述】:

我正在使用 FB Unity SDK,我经常遇到的一个问题是检查是否已经调用了 FB.Init()。

场景:

  1. 有一个FB连接按钮,用户点击它。
  2. 如果用户决定取消对话框并点击“Fb connect again”

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 为空?

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

【问题讨论】:

  • btw C# 字符串类有 'IsNullOrEmpty' 让您的上述检查更有效率。
  • 你的意思是 FB.AccessToken.IsNullOrEmpty()?

标签: facebook unity3d facebook-unity-sdk


【解决方案1】:

FB.Init() 不应多次调用。这是设计使然(因为它在 Unity 中初始化 Facebook 游戏对象等)。而是这样做:

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       
    }
}

【讨论】:

  • 啊,好吧,不知道 isLoggedIn 会检查令牌。我会尝试并发布更新
  • 这绝对有助于解决这个问题。谢谢布赖恩。
  • @Brian Jew,你能帮我解决这个问题吗:stackoverflow.com/questions/22846990/…
  • 这种方法可能更好:if(!FB.IsInitialized) { FB.Init(...); }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多