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

Проблемы с плагином Google Play Games For Unity

novadevПользовательwww10 янв. 201818:47#0
Всем привет. Столкнулся с проблемой. Для авторизации пользователей на клиенте использую плагин Google Game для Unity. После успешной авторизации (появился оверлей с приветствием, которое означает что я зашел в свой аккаунт Google Game), функции "GetServerAuthCode", "GetIdToken" и "GetUserEmail" возвращает пустые строки.
Я проверил настройки плагина, настройки в консоли разработчика и значение записи Credentials в Google API console. Все корректно.

Версия плагина: 0.9.40
Unity версия: 5.4

Init code:

PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
            .RequestEmail()
            .RequestServerAuthCode(false)
            .RequestIdToken()
            .Build();

        PlayGamesPlatform.InitializeInstance(config);
        PlayGamesPlatform.DebugLogEnabled = true;
        PlayGamesPlatform.Activate();

Logs (Я скрыл персональные данные звездочками "*"):

01-10 18:13:19.947: I/Unity(1893): Starting Auth with token client.
01-10 18:13:19.947: I/Unity(1893):
01-10 18:13:19.947: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:19.977: W/Unity(1893): !!! [Play Games Plugin DLL] 01/10/18 18:13:19 +03:00 WARNING: Creating new PlayGamesPlatform
01-10 18:13:19.977: W/Unity(1893):
01-10 18:13:19.977: W/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:19.977: I/Unity(1893):  [Play Games Plugin DLL] 01/10/18 18:13:19 +03:00 DEBUG: Activating PlayGamesPlatform.
01-10 18:13:19.977: I/Unity(1893):
01-10 18:13:19.977: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:19.977: I/Unity(1893):  [Play Games Plugin DLL] 01/10/18 18:13:19 +03:00 DEBUG: PlayGamesPlatform activated: GooglePlayGames.PlayGamesPlatform
01-10 18:13:19.977: I/Unity(1893):
01-10 18:13:19.977: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:19.977: I/Unity(1893):  [Play Games Plugin DLL] 01/10/18 18:13:19 +03:00 DEBUG: Creating platform-specific Play Games client.
01-10 18:13:19.977: I/Unity(1893):
01-10 18:13:19.977: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:19.977: I/Unity(1893):  [Play Games Plugin DLL] 01/10/18 18:13:19 +03:00 DEBUG: Creating Android IPlayGamesClient Client
01-10 18:13:19.977: I/Unity(1893):
01-10 18:13:19.977: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:19.997: I/Unity(1893): ---- [0] -- 500170789
01-10 18:13:19.997: I/Unity(1893):
01-10 18:13:19.997: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:20.457: D/GamesUnitySDK(1893): Performing Android initialization of the GPG SDK
01-10 18:13:20.477: I/Unity(1893): Building GPG services, implicitly attempts silent auth
01-10 18:13:20.477: I/Unity(1893):
01-10 18:13:20.477: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:20.497: E/Unity(1893): Get auth code in callback!
01-10 18:13:20.497: E/Unity(1893):
01-10 18:13:20.497: E/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:20.497: E/Unity(1893): Auth code:
01-10 18:13:20.497: E/Unity(1893):
01-10 18:13:20.497: E/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:20.497: E/Unity(1893): Token:
01-10 18:13:20.497: E/Unity(1893):
01-10 18:13:20.497: E/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:20.497: E/Unity(1893): Email:
01-10 18:13:20.497: E/Unity(1893):
01-10 18:13:20.497: E/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:20.517: I/Unity(1893):  [Play Games Plugin DLL] 01/10/18 18:13:20 +03:00 DEBUG: Starting Auth Transition. Op: SIGN_IN status: 10
01-10 18:13:20.517: I/Unity(1893):
01-10 18:13:20.517: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:20.517: I/Unity(1893):  [Play Games Plugin DLL] 01/10/18 18:13:20 +03:00 DEBUG: Invoking callbacks, AuthState changed from silentPending to Unauthenticated.
01-10 18:13:20.517: I/Unity(1893):
01-10 18:13:20.517: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:20.517: I/Unity(1893):  [Play Games Plugin DLL] 01/10/18 18:13:20 +03:00 DEBUG: there are pending auth callbacks - starting AuthUI
01-10 18:13:20.517: I/Unity(1893):
01-10 18:13:20.517: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:20.577: I/Unity(1893):  [Play Games Plugin DLL] 01/10/18 18:13:20 +03:00 DEBUG: Starting Auth Transition. Op: SIGN_IN status: VALID
01-10 18:13:20.577: I/Unity(1893):
01-10 18:13:20.577: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:20.597: I/Unity(1893):  [Play Games Plugin DLL] 01/10/18 18:13:20 +03:00 DEBUG: Entering internal callback for PlayerManager#InternalFetchSelfCallback
01-10 18:13:20.597: I/Unity(1893):
01-10 18:13:20.597: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:20.597: I/Unity(1893):  [Play Games Plugin DLL] 01/10/18 18:13:20 +03:00 DEBUG: Populating User
01-10 18:13:20.597: I/Unity(1893):
01-10 18:13:20.597: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:20.607: I/Unity(1893):  [Play Games Plugin DLL] 01/10/18 18:13:20 +03:00 DEBUG: Found User: [Player: '***' (id ***)]
01-10 18:13:20.607: I/Unity(1893):
01-10 18:13:20.607: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:20.607: I/Unity(1893):  [Play Games Plugin DLL] 01/10/18 18:13:20 +03:00 DEBUG: Maybe finish for User
01-10 18:13:20.607: I/Unity(1893):
01-10 18:13:20.607: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:20.607: I/Unity(1893):  [Play Games Plugin DLL] 01/10/18 18:13:20 +03:00 DEBUG: Auth not finished. User=[Player: '***' (id ***)] achievements=
01-10 18:13:20.607: I/Unity(1893):
01-10 18:13:20.607: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:21.607: I/Unity(1893):  [Play Games Plugin DLL] 01/10/18 18:13:21 +03:00 DEBUG: Entering internal callback for AchievementManager#InternalFetchAllCallback
01-10 18:13:21.607: I/Unity(1893):
01-10 18:13:21.607: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:21.607: I/Unity(1893):  [Play Games Plugin DLL] 01/10/18 18:13:21 +03:00 DEBUG: Populating Achievements, status = VALID
01-10 18:13:21.607: I/Unity(1893):
01-10 18:13:21.607: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:21.627: I/Unity(1893):  [Play Games Plugin DLL] 01/10/18 18:13:21 +03:00 DEBUG: Found 1 Achievements
01-10 18:13:21.627: I/Unity(1893):
01-10 18:13:21.627: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:21.627: I/Unity(1893):  [Play Games Plugin DLL] 01/10/18 18:13:21 +03:00 DEBUG: Maybe finish for Achievements
01-10 18:13:21.627: I/Unity(1893):
01-10 18:13:21.627: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:21.627: I/Unity(1893):  [Play Games Plugin DLL] 01/10/18 18:13:21 +03:00 DEBUG: Auth finished. Proceeding.
01-10 18:13:21.627: I/Unity(1893):
01-10 18:13:21.627: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:21.627: I/Unity(1893):  [Play Games Plugin DLL] 01/10/18 18:13:21 +03:00 DEBUG: Invoking Callbacks: System.Action`2[System.Boolean,System.String]
01-10 18:13:21.627: I/Unity(1893):
01-10 18:13:21.627: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:21.627: E/Unity(1893): Auth is: True
01-10 18:13:21.627: E/Unity(1893):
01-10 18:13:21.627: E/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:21.647: I/Unity(1893):  [Play Games Plugin DLL] 01/10/18 18:13:21 +03:00 DEBUG: Invoking user callback on game thread
01-10 18:13:21.647: I/Unity(1893):
01-10 18:13:21.647: I/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:22.127: E/Unity(1893): auth code:
01-10 18:13:22.127: E/Unity(1893):
01-10 18:13:22.127: E/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:22.127: E/Unity(1893): token id:
01-10 18:13:22.127: E/Unity(1893):
01-10 18:13:22.127: E/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
01-10 18:13:22.127: E/Unity(1893): email:
01-10 18:13:22.127: E/Unity(1893):
01-10 18:13:22.127: E/Unity(1893): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)

Буду очень признателен за любую помощь.

seamanПостоялецwww10 янв. 201820:31#1
novadev
> После успешной авторизации
Встречный вопрос.
Авторизация проходит без проблем? У меня просто проблема.
Использую плагин https://github.com/playgameservices/play-games-plugin-for-unity.
При первом запуске просит разрешение на доступ приложения к аккаунту. После чего нормально авторизуется и все работает, показывает ачивки, лидербоард...
При последующих запусках приложения авторизация не проходит. Ну и естественно все связанное с Google Play Service не работает. Ошибок не выдает.
Код инициализации и авторизации (урезанный)
public class GooglePlayManager : Singleton<GooglePlayManager>
{
        private bool __auth;

        public void Start()
        {
                var config = new PlayGamesClientConfiguration.Builder().RequestIdToken().Build();
                PlayGamesPlatform.InitializeInstance(config);
                PlayGamesPlatform.DebugLogEnabled = true;
                PlayGamesPlatform.Activate();
                Social.localUser.Authenticate(OnAuth);
        }
        public void OnAuth(bool success, string message)
        {
                Debug.Log("On auth - " + success + " Message - " + message);
                __auth = success;
        }
}
adb логи
+ Показать

Нашел такой тред. https://github.com/playgameservices/pla ... -310877125 Изначально контрольная сумма сертификата разработчика (в консоли разработчика) совпадает с контрольной суммой сертификата для подписи приложения. Т.е. вроде ничего и делать не надо. Однако в других местах говорят, что нужно делать как нарисовано тут: https://imgur.com/a/zw0Os. Попробовал - то же самое - не авторизуется.

Да, если, почистить кеш приложения и сохраненные данные - окно авторизации всплывает и дает выбрать каким профилем входить, но авторизации все равно нет.
Покопался в консоли. Обнаружил, что на все вопросы был ответ с кодом 200. По аналогии с http - это должно означать "ОК". Получается, что авторизация на сервере проходит, а вот ответ до устройства не доходит, или приходит с ошибкой!

Нашел вот тут комментарий: https://habrahabr.ru/post/230377/ (в конце), что авторизацию лучше делать не через Social, как рекомендуют в уроках, а через PlayGamesPlatform. Тогда якобы ответ будет более верен.

Попробовал типа PlayGamesPlatform.Instance.Authenticate(OnAuth); - не помогло.

Есть только одна мысль. Когда выкладывал приложение Гугл спрашивает кто будет подписывать - он или я самостоятельно. Я выбрал - Гугл. Он тогда извлекает из загруженного приложения мою подпись и запаковывает свою. Можно попробовать самому подписывать - может тогда будет все ОК.

Вы сами подписываете или дали Гуглу?
Что еще можно посмотреть - попробовать?

Правка: 10 янв. 2018 20:31

X-rusПостоялецwww11 янв. 20189:35#2
novadev
> функции "GetServerAuthCode", "GetIdToken" и "GetUserEmail" возвращает пустые строки
Нужно задать корректный Web App Client ID. Я в Linked apps добавил Web link (привязал на PlayFab аккаунт), взял оттуда ссылку на ID и всё заработало. Ещё, насколько я понял, при первом запросе email вылезет окно, которое запросит доступ к персональным данным. Поэтому почту лучше вообще не запрашивать.

seaman
> Вы сами подписываете или дали Гуглу?
Я сам задаю нужный SHA в Google API. Узнать его можно так "keytool -exportcert -keystore path-to-debug-or-production-keystore -list -v". Для этих целей проще всего создать новый Game service для тестов. И там вручную задавать все нужные данные, после быстренько тестировать через Юнити. Попробуй убрать RequestIdToken, потому что для него нужен Web link, которого у тебя видимо нет:

        PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
            .Build();
        PlayGamesPlatform.InitializeInstance(config);

        PlayGamesPlatform.DebugLogEnabled = true;

        PlayGamesPlatform.Activate();

P.S. Ещё нужно не забыть добавить свой аккаунт в тестеры.

Правка: 11 янв. 2018 9:37

novadevПользовательwww11 янв. 201812:11#3
X-rus, действительно добавил Web Link и все заработало.
Спасибо большое!
А Вы давно пользуетесь PlayFab? И есть ли ограничения по авторизациям у бесплатного аккаунта?

Правка: 11 янв. 2018 12:12

novadevПользовательwww11 янв. 201812:16#4
seaman, авторизует без проблем.
Я сам подписывал. Причем Unity 5.4 в этом вопросе лучше не доверять (не уверен за новые версии), так как при подписи размер ключа < 2048, на что Google плюется.
X-rusПостоялецwww11 янв. 201815:28#5
novadev
> А Вы давно пользуетесь PlayFab? И есть ли ограничения по авторизациям у бесплатного аккаунта?
Недавно начал. По авторизациям нет. Есть только лимиты, которые можно посмотреть в настройках:
+ Показать

Правка: 11 янв. 2018 15:28

novadevПользовательwww12 янв. 201813:19#6
X-rus, спасибо огромное за информацию. Вы мне очень помогли.

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

Тема закрыта.

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