Google Play Games API и область применения

Я долго пытался найти хороший ответ на свой вопрос. Моя проблема довольно проста.

При доступе к Google Play Games API Google советует нам не запрашивать ненужные области видимости.

В этом сообщении пример хорошего способа доступа к API без экрана согласия выглядит следующим образом:

 // This way you won’t get a consent screen  
 GoogleApiClient gac = new GoogleApiClient.Builder(this, this, this)  
           .addApi(Games.API)  
           .build();  
 // This way you won’t get a consent screen  

В Руководстве по игровым сервисам они приводят этот пример.

// Create the Google Api Client with access to the Play Games services
mGoogleApiClient = new GoogleApiClient.Builder(this)
        .addConnectionCallbacks(this)
        .addOnConnectionFailedListener(this)
        .addApi(Games.API).addScope(Games.SCOPE_GAMES)
        // add other APIs and scopes here as needed
        .build();

Итак, мой вопрос касается «addScope (Games.SCOPE_GAMES)». При его добавлении пользователь получает экран согласия на возрастной диапазон, профиль игрока и что-то в этом роде, точно не помню.

Для чего это? Какая разница между двумя? К чему у меня нет доступа, если я просто не использую его, а просто использую addApi(Games.API) без добавления области действия.

В моей игре нужно отображать только имена пользователей и идентификаторы игроков для многопользовательской игры. Нужно ли мне addScope? Потому что я действительно не хочу, чтобы при входе в систему появлялось окно согласия, просто так.

Спасибо.


person Sam'    schedule 28.06.2017    source источник


Ответы (1)


Как указано в документах Google Play, для серверных функций, включая getCurrentAccountName(), требуется SCOPE_GAMES. Поэтому, если вы хотите показать имя пользователя своим игрокам, вам нужно будет добавить область действия. (Дополнительно для имени пользователя требуется разрешение: android.permission.GET_ACCOUNTS)

person Bernd    schedule 28.06.2017
comment
Спасибо за ваш ответ :) Я получаю имя пользователя с помощью getCurretPlayer().displayName(); и это работает нормально. Так что я думаю, мне не нужно это разрешение get_accounts, а только область действия. - person Sam'; 28.06.2017