Автоматический вход в Facebook Unity

Хорошо, так что удалось решить эту проблему, хотя я не могу точно сказать, в чем была причина, я почти полностью переписал инициализацию, вход и проверку разрешений в нашем классе подключения к facebook. Я не видел никакой очевидной разницы между потоком, который мы использовали, и потоком в примере, но явно что-то было. В любом случае автоматический вход в систему при инициализации теперь работает нормально.

Использование версии 4.3.6 плагина Facebook для Unity. Заметил небольшую ошибку, которая на данный момент немного раздражает.

Как только пользователь вошел в систему и принял наши разрешения, игра продолжается и публикуется по желанию. Однако, если игра закроется, а затем перезапустится, пользователю придется снова войти в систему.

Теперь позвольте мне внести ясность: в настоящее время мы не вызываем функцию входа в систему при повторном запуске, почему? потому что это вызывает мгновенное переключение приложения, которое выглядит ужасно и раздражает. Подсказки, кажется, предполагают, что Init должен попытаться перезапуститься с действительными данными сеанса. Однако до и после вызова этой функции инициализации маркер доступа кажется пустым. Таким образом, автоматический вход в систему не происходит.

Я попытался установить для этого флага состояния значение true как в объекте настроек, так и с помощью кода инициализации. Кажется, ни то, ни другое не имеет значения.

Есть ли что-то, чего мне не хватает, чтобы заставить это работать?

Есть ли способ с помощью этого официального плагина получить автоматический вход в систему без обмена приложениями вообще? или я просто преследую мечты об этом?

Изменить:
Просто предоставить дополнительную информацию по этому поводу. Тестирование в настоящее время на iPhone5 и iPad3 с установленным facebook, один с использованием учетной записи facebook, зарегистрированной через настройки iOS, оба следуют одному и тому же поведению, сеанс не возобновляется при инициализации, а вход после инициализации вызывает обмен приложениями. Сегодня я попытаюсь протестировать пустой проект с примерами facebook, чтобы увидеть, что мы напортачили, или это плагин.


person Fat-Wednesday    schedule 31.01.2014    source источник
comment
На какой платформе вы это видите?   -  person benp    schedule 31.01.2014
comment
В первую очередь на iOS, возможно, также на Android, но я не могу это подтвердить прямо сейчас.   -  person Fat-Wednesday    schedule 01.02.2014


Ответы (2)


Я знаю, что вы решили свою проблему, но я подумал, что это может быть полезно для других, поскольку у меня были похожие проблемы.

FacebookSettings › Параметры FB.Init() › Статус должен быть установлен на true. Справочные документы по свойству Status говорят:

Если true, пытается инициализировать объект Facebook с допустимыми данными сеанса.

  • Примечание: для этого часто требуется асинхронная операция чтения, и любой код, который зависит от ее завершения, должен быть синхронизирован в HideUnityDelegate, переданном в Init().

Возможно, это ошибка в документации, но я не думаю, что HideUnityDelegate на самом деле используется в Init() (Unity не скрывается при вызове Init). Однако используется 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) {
}
person Community    schedule 04.03.2014
comment
раньше так работало, но не с последней версией FB SDK - person Nika Kasradze; 20.10.2015

Оказывается, при вызове метода OnInitComplete, который вы передаете методу FB.Init, переменная FB.IsLoggedIn еще не настроена. После того, как я добавил задержку 0,5, теперь он правильно находит зарегистрированного пользователя. Не знаю, почему в новой версии так, но у меня работает :)

person Rosen 'RaiN' Rusinov    schedule 23.10.2015