Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Unity. Google Play Services. Проблема авторизации

Unity. Google Play Services. Проблема авторизации

Страницы: 1 2 Следующая »
OnixПользовательwww5 мар. 201819:44#0
Добрый вечер, господа!
Хочу попросить у вас совета, ибо бьюсь со своей проблемой уже почти неделю.

Столкнулся с проблемой подключения Google play services в проекте Unity. Хочу в своей игре подключать игрока к сервисам и использовать простенькие две функции - "leaderboards" и "achievements".
Проблема состоит в том, что при запуске проекта на смартфоне функция Social.localUser.Authenticate не возвращает никакого значения (ни true ни false), и не выполняются ни функция при удачной аутентификации, ни функция при неудачной.
Самое интересное что в Unity editor функция Authenticate все таки возвращает законный false и выполняет все последующие действия.
Для реализации использую плагин https://github.com/playgameservices/play-games-plugin-for-unity.

Мой скрипт:

 PlayGamesClientConfiguration config;

    void Start () {
        config = new PlayGamesClientConfiguration.Builder().EnableSavedGames().Build();
        PlayGamesPlatform.InitializeInstance(config);
        PlayGamesPlatform.DebugLogEnabled = true;
        LogIn();
  }

    private void LogIn()
    {
        PlayGamesPlatform.Activate();
        if (!PlayGamesPlatform.Instance.localUser.authenticated)
        {
            Social.localUser.Authenticate(onProcessAuthentication);
        }
    }

    private void onProcessAuthentication(bool success, string s)
    {
  //данный код не выволняется
        if (success)
        {
            connection = success;
        }
        else
        {
        }
    }

Заранее спасибо всем, кто откликнется

Правка: 5 мар. 2018 19:58

ZabПостоялецwww6 мар. 20184:21#1
Что за стринговый второй параметр у onProcessAuthentication? Его там быть не должно, вроде как.
OnixПользовательwww6 мар. 20186:15#2
Zab
Спасибо, что откликнулись!
У метода Social.localUser.Authenticate есть перегрузка с двумя параметрами - bool и string, где string возвращает текст ошибки при неудачной аутентификации.
Использовал данную перегрузку в надежде получить ответ на свой вопрос, но увы. На данный момент код для вывода этого string удалил т.к. ответа нет вообще, а перегрузку забыл поправить.

Изначально конечно же пробовал Social.localUser.Authenticate только с bool.

seamanПостоялецwww6 мар. 20188:57#3
Onix
> //данный код не выволняется
А этот выполняется?
            Social.localUser.Authenticate(onProcessAuthentication);
Если нет - уберите проверку if (!PlayGamesPlatform.Instance.localUser.authenticated) и заведите свой флаг успешной аутентификации.
PS:  у меня вариант со строковым параметром колбека работает...

Правка: 6 мар. 2018 8:58

OnixПользовательwww6 мар. 20189:37#4
seaman
Не могу сказать выполняется ли именно
 Social.localUser.Authenticate(onProcessAuthentication);

т.к. как раз жду ответа от него, но данную проверку
(!PlayGamesPlatform.Instance.localUser.authenticated) 
выполняет и проходит дальше реализуя все функции до аутентификации. После Social.localUser.Authenticate кстати не смотрел будет ли выполняться какой либо код или все таки скрипт полностью умирает на нем.

Правка: 6 мар. 2018 9:39

OnixПользовательwww6 мар. 201818:03#5
seaman
> уберите проверку if (!PlayGamesPlatform.Instance.localUser.authenticated)
Все таки попробовал убрать данную проверку вообще, но к сожалению ничего не изменилось.
Так же проверил выполнения функции после
 Social.localUser.Authenticate(onProcessAuthentication);
и ничего не выполнилось. Т.е. на смартфоне в данном месте либо зависает (и не возвращает ответ) либо крешится, но вроде по лог файлу смотрел и не видел Error'ов.

Вот такая загадка...чувствую что дело в чем то очень очевидном но не понимаю

Правка: 6 мар. 2018 18:04

seamanПостоялецwww6 мар. 201819:04#6
Попробуйте PlayGamesPlatform.Instance.Authenticate(onProcessAuthentication);
OnixПользовательwww6 мар. 201819:16#7
seaman
Пробовал уже...увы не спасло)
AlexdeBurПостоялецwww6 мар. 201820:11#8
А какой лог смотрите? Через logcat?
У меня подобное возникало при проблемах с библиотеками Google Play Games - но там явно писало ошибку о том, что не найден какой-то из файлов.
AlexdeBurПостоялецwww6 мар. 201820:17#9
Вообще PlayGamesPlatform.Activate() вроде достаточно выполнить один раз при старте программы.
В своих проектах авторизацию я делаю так:
    public void Start() {
      PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder().Build();
      PlayGamesPlatform.InitializeInstance(config);
      PlayGamesPlatform.DebugLogEnabled = false;
      PlayGamesPlatform.Activate();
    }

    public void Authenticate () {
      Social.localUser.Authenticate((success) => {
        //your code
      };
    }

На телефоне Google Play Games установлен и в нем выполнен вход? При выполнении авторизации в игре должно возникать окно Google Play Games, оно есть?

Правка: 6 мар. 2018 20:22

OnixПользовательwww6 мар. 201820:32#10
AlexdeBur
Логи собирал первый раз и по инструкции).
Подсоединил смартфон по usb, включил Build and run в редакторе и через консоль запустил сбор логов. Давайте попробую еще раз сейчас собрать и выслать сюда на анализ.

PlayGamesPlatform.Activate() я так же выполняю один раз в Start. Просто вынес в отдельный метод).

OnixПользовательwww6 мар. 201820:47#11
AlexdeBur
https://drive.google.com/open?id=1kVTIy1UzZ_YdJCvkchY_O7J157v3sy7N
ссылка на лог файл. Надеюсь поможет)

ЗЫ по ходу первый раз неправильно собрал ибо сейчас явно есть ошибки, но все равно не понимаю их.

Правка: 6 мар. 2018 20:52

AlexdeBurПостоялецwww6 мар. 201821:12#12
Onix
Посмотрел, вот сообщение об ошибке:
Unity   : DllNotFoundException: gpg

Т.е. не хватает какой-то из библиотек Google Play Games, поэтому и не проходит авторизация. Точнее не могу сказать, надо смотреть проект и какие jar/aar лежат в Assets/Plugins/Android. PlayServicesResolver используете? Какая версия Unity?

Правка: 6 мар. 2018 21:14

OnixПользовательwww6 мар. 201822:07#13
AlexdeBur
Unity 2017.3.1f1
PlayServicesResolver не использовал
в папке Assets/Plugins/Android лежит только UnityAds.aar
...
то есть получается от гугл вообще библиотек в плагине нет...
max-korvinУчастникwww6 мар. 201822:43#14
Вот некоторая инфа которая может помочь.
Тестируемый апк должен быть подписан тем же ключём что и загруженная версия в плей маркет.
Аккаунт на котором тестируется игра должен быть внесен в список тестировщиков в консоли маркета.
Так же при авторизации нужно использовать айдишник приложения состоящий из 12 цифр который выдается после подключения сервисов в консоли маркета.
Страницы: 1 2 Следующая »

/ Форум / Программирование игр / Общее

2001—2018 © GameDev.ru — Разработка игр