Facebook Unity SDK, FB.Init() уже был вызван

Я работаю с FB Unity SDK, и одна постоянная проблема, с которой я сталкиваюсь, заключается в том, чтобы проверить, был ли уже вызван FB.Init().

Сценарий:

  1. Есть кнопка подключения к фб, пользователь нажимает на нее.
  2. Если пользователь решит отменить диалог и снова нажмет «Fb подключиться»

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 будет нулевым?

И влияют ли эти сообщения на отправку приложения? Будут ли они отображаться в рабочей сборке?


person Veeru    schedule 21.10.2013    source источник
comment
Кстати, строковый класс С# имеет «IsNullOrEmpty», чтобы сделать вашу проверку выше немного более эффективной.   -  person aaron    schedule 24.10.2013
comment
вы имеете в виду FB.AccessToken.IsNullOrEmpty()?   -  person Veeru    schedule 25.10.2013


Ответы (1)


FB.Init() не следует вызывать более одного раза. Это предусмотрено дизайном (потому что он создает Facebook GameObjects и тому подобное в Unity). Вместо этого сделайте следующее:

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       
    }
}
person Brian Jew    schedule 21.10.2013
comment
а, хорошо, не знал, что isLoggedIn проверяет токен. Я попробую это и опубликую обновление - person Veeru; 22.10.2013
comment
Это определенно помогло в решении проблемы. Спасибо, Брайан. - person Veeru; 22.10.2013
comment
@Brian Jew, вы можете помочь с этой проблемой здесь: stackoverflow.com/ вопросы/22846990/ - person Ahmed Saleh; 18.05.2014
comment
Этот подход может быть лучше: if(!FB.IsInitialized) { FB.Init(...); } - person Raptor; 06.01.2015