0

Я уже несколько дней стучу головой о стену над этим. Несмотря на чтение многих сообщений, описывающих многочисленные проблемы/решения по отказу от входа в систему, я не смог найти решение моей проблемы.Служба игры в 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, это не имеет никакого значения.

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

Большое спасибо заранее.

+0

Вы создаете его в консоли разработчика Google Play (https://play.google.com/apps/publish) или в [Консоль API Google] (https://console.developers.google.com)? – ianhanniballake

+0

Во-первых, я добавил приложение в Game Services в Консоль разработчика. Затем я нажимаю ссылку Linked Apps и добавляю ее здесь для авторизации ... отсюда я попадаю в диспетчер API, где я ввел имя, пакет и отпечаток SHA-1. – Gavin

ответ

0

Я думаю, что вам следует внимательно прочитать (или перечитать) всю описанную процедуру here. Добавьте комментарий, если вам понадобится дополнительная помощь по этому вопросу после повторного изучения учебника с нуля.

90% проблем с этим связаны: неправильно sha1 сертификат, неправильное имя приложения пакета, отсутствующего идентификатор клиента и что-то вроде тех, ...

PS: here вы можете найти все рабочие образцы

+0

Спасибо за это. Я искренне надеюсь, что моя проблема - это нечто тривиальное, как вы говорите, потому что я немного смущен в противном случае! Я снова проведу шаги в ссылке, которую вы предоставили, и сообщит вам, как я это делаю. – Gavin

+0

Удалили и перерегистрировали мою игру в консоли разработчика Google Play, выполнив шаги, указанные в ссылке. Double проверил идентификатор клиента, данные имени пакета в моих файлах манифеста и Gradle. Найден опечатка в applicationId в defaultConfig ... теперь он работает. :) Спасибо. – Gavin

+0

Ницца !! Вы можете принять ответ, если в какой-то мере помогли вам найти проблему;) – MatPag

0

Имя пакета отображается в нескольких местах проекта и ДОЛЖНО соответствовать имени пакета, зарегистрированного в консоли разработчика Google Play. Например. -

андроида build.gradle

defaultConfig { 
    applicationId "com.package.name" 
    ... 
} 

андроид AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.package.name" 
    ... 
</manifest> 

я имел опечатка в моем ApplicationID в андроида build.gradle. После того, как это было исправлено, службы Google Play успешно вошли в систему.

 Смежные вопросы

  • Нет связанных вопросов^_^