Аутентификация платформы для игр Android

Для доступа к функционалу сервисов Google Play Games вашей игре необходимо предоставить учетную запись авторизованного игрока. В этом документе описано, как реализовать удобную аутентификацию в вашей игре.

SDK Play Games Services v2 вносит ряд улучшений, которые увеличивают количество пользователей, авторизованных в вашей игре, и упрощают разработку:

  • Improvements for users:
    • После выбора учетной записи по умолчанию пользователи проходят аутентификацию без необходимости взаимодействия с каким-либо запросом.
    • Пользователям больше не нужно скачивать приложение Play Games для аутентификации в сервисах Play Games или создания новой учетной записи.
    • Теперь пользователи могут управлять своими учетными записями Play Games Services для нескольких игр с одной страницы.
  • Improvements for developers:
  • Клиентскому коду больше не нужно обрабатывать процесс аутентификации или выхода из системы, поскольку вход в систему запускается автоматически при старте игры, а управление учетной записью осуществляется в настройках операционной системы.

New client integration

В этом разделе показано, как выполнить интеграцию нового клиента с сервисом Play Games Services Sign In v2.

Add the dependency

Добавьте зависимость Play Game Services SDK в корневой файл build.gradle вашего приложения. Если вы используете Gradle, вы можете добавить или обновить зависимость следующим образом:

dependencies {
 implementation "com.google.android.gms:play-services-games-v2:+"
}

Define the project ID

Чтобы добавить идентификатор проекта Play Games Services SDK в ваше приложение, выполните следующие шаги:

  1. В файл AndroidManifest.xml вашего приложения добавьте следующий элемент <meta-data> и атрибуты к элементу <application> :

    <manifest>
      <application>
        <meta-data android:name="com.google.android.gms.games.APP_ID"
                   android:value="@string/game_services_project_id"/>
      </application>
    </manifest>
    

    Укажите ссылку на строковый ресурс @string/game_services_project_id , используя в качестве значения идентификатор проекта игровых сервисов вашей игры. Идентификатор проекта игровых сервисов можно найти под названием вашей игры на странице «Конфигурация» в консоли Google Play.

  2. В файле res/values/strings.xml добавьте ссылку на строковый ресурс и укажите в качестве значения идентификатор вашего проекта. В Google Play Console идентификатор вашего проекта можно найти под названием вашей игры на странице «Конфигурация» . Например:

    <!-- res/values/strings.xml -->
    <resources>
      <!-- Replace 0000000000 with your game’s project id. Example value shown above.  -->
      <string translatable="false"  name="game_services_project_id"> 0000000000 </string>
    </resources>
    

Initialize the SDK

Инициализируйте Play Games SDK в функции обратного вызова onCreate(..) вашего класса Application .

import com.google.android.gms.games.PlayGamesSdk;

...

@Override
public void onCreate(){
  super.onCreate();
  PlayGamesSdk.initialize(this);
}

Get the authentication result

При запуске игры она всегда будет пытаться аутентифицировать пользователя. Для аутентификации пользователя необходимо убедиться в успешной аутентификации и получить его идентификатор игрока (Player ID).

Для проверки попытки аутентификации вызовите метод GamesSignInClient.isAuthenticated() и используйте addOnCompleteListener для получения результатов. Например:

GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity());

gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
  boolean isAuthenticated =
    (isAuthenticatedTask.isSuccessful() &&
     isAuthenticatedTask.getResult().isAuthenticated());

  if (isAuthenticated) {
    // Continue with Play Games Services
  } else {
    // Show a sign-in button to ask players to authenticate. Clicking it should
    // call GamesSignInClient.signIn().
  }
});

Если пользователь решит не проходить аутентификацию при запуске игры, рекомендуется продолжать отображать кнопку со значком «Играть в игры» или показать пользователю экран входа в систему, где кнопка со значком «Играть в игры» будет одним из вариантов аутентификации, и попытаться повторно аутентифицировать пользователя, вызвав метод GamesSignInClient.signIn() если пользователь нажмет эту кнопку. После проверки аутентификации пользователя можно получить его идентификатор игрока (Player ID). Например:

PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
    // Get PlayerID with mTask.getResult().getPlayerId()
  }
);