Я уже несколько дней стучу головой о стену над этим. Несмотря на чтение многих сообщений, описывающих многочисленные проблемы/решения по отказу от входа в систему, я не смог найти решение моей проблемы.Служба игры в Google Play не может войти в систему
Короче говоря, я разрабатываю игру в Android Studio, используя каркас LibGDX и добавили BaseGameUtils в качестве библиотеки и добавлены все необходимые зависимости и т.д.
Постановка задачи: Когда игра начинается, она пытается для подключения к GPGS, но всегда отвечает сообщением «Не удалось войти в систему». LogCat содержит следующее сообщение:
01-03 19:37:41.744 6693-7436/? E/TokenRequestor: You have wrong OAuth2 related configurations, please check. Detailed error: UNREGISTERED_ON_API_CONSOLE
01-03 19:37:41.764 20609-20609/? I/SignInActivity: Transition from 6 to 11
01-03 19:37:41.764 20609-20609/? W/SignInActivity: onSignInFailed()...
01-03 19:37:41.764 20609-20609/? W/SignInActivity: Sign in failed during 6
01-03 19:37:41.764 20609-20609/? W/SignInActivity: ==> Returning non-OK result: 10002
По словам https://developers.google.com/android/reference/com/google/android/gms/games/GamesActivityResultCodes ...
public static final int RESULT_SIGN_IN_FAILED
Result code sent back to the calling Activity when signing in fails.
The attempt to sign in to the Games service failed.
For example, this might happen if the network is flaky,
or the user's account has been disabled, or consent could not be obtained.
Constant Value: 10002
Моя сеть не является «слоеное», и я не верю, что мой аккаунт был отключен - другие коммерческие игры I установили отлично работать с GPGS.
Я подписал свой APK - обе отладки и выпуска (хотя я только работаю с отладкой на этом этапе). Я добавил игру в консоль разработчика Google и связал ее в диспетчере API и создал идентификатор клиента OAuth2. Фактически, я делал это много раз, удаляя связанную игру и воссоздавая ее, думая, что либо мой идентификатор клиента, либо отпечаток SHA1 были неправильными. Сообщение logcat предполагает, что конфигурация OAuth2 неверна, но я проверил это много раз, и все это выглядит хорошо для меня. Каков наилучший способ проверить подпись?
Я тестирую физический Samsung S7, который я развертываю непосредственно с моего ноутбука. У моего Android Gradle есть необходимые объявления SigningConfigs, поэтому я считаю, что моя развернутая игра должна быть правильно подписана.
android {
signingConfigs {
config {
keyAlias 'mygame-key'
keyPassword 'mypassword'
storeFile file('path/to/my/keystore.jks')
storePassword 'keystorepassword'
}
}
buildTypes {
release {
signingConfig signingConfigs.config
}
debug {
signingConfig signingConfigs.config
debuggable true
}
}
В моем манифесте у меня есть необходимые строки. Например. -
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id"/>
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
Первоначально в AndroidLauncher, я использовал класс GameHelper, но недавно обнаружил, что это является устаревшим, поэтому я изменил мой код, чтобы использовать GoogleApiClient. Строитель определяется следующим образом:
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Games.API).addScope(Games.SCOPE_GAMES)
.build();
Код для других методов был взят непосредственно из TrivialQuest примера приложения, например, -
@Override
protected void onStart() {
Log.d(TAG, "onStart()");
super.onStart();
mGoogleApiClient.connect();
}
Однако, несмотря на использование кода клиента Google API, это не имеет никакого значения.
Я не уверен, что еще нужно предоставить здесь, но, пожалуйста, дайте мне знать, если вам нужно увидеть какие-либо другие части кода. Я был бы чрезвычайно благодарен за любые предложения о том, что нужно изучить в коде или журналах, чтобы лучше понять, почему это происходит.
Большое спасибо заранее.
Вы создаете его в консоли разработчика Google Play (https://play.google.com/apps/publish) или в [Консоль API Google] (https://console.developers.google.com)? – ianhanniballake
Во-первых, я добавил приложение в Game Services в Консоль разработчика. Затем я нажимаю ссылку Linked Apps и добавляю ее здесь для авторизации ... отсюда я попадаю в диспетчер API, где я ввел имя, пакет и отпечаток SHA-1. – Gavin