Вход в сервисы Google для игр

Я реализую новый вход с помощью потока Google в соответствии с этим сообщением в блоге: api-updates-for-sign-in-with-google

Однако при входе я получаю следующее исключение:

IllegalStateException: Auth.GOOGLE_SIGN_IN_API cannot be used with Games.API

Я строю свой GoogleApiClient следующим образом:

final GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
        .enableAutoManage(this, this)
        .addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)
        .addApi(Games.API)
        .build();

Когда я удаляю .addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions), я получаю следующее исключение:

java.lang.NullPointerException: Appropriate Api was not requested.

Я что-то упустил или новый поток не поддерживает Games.API?


person maclir    schedule 28.02.2016    source источник
comment
Пожалуйста, прочитайте plus.google.com/+EtienneLawlor/posts/AB9rq2B69k3   -  person BNK    schedule 05.03.2016
comment
И эта ссылка android-developers.blogspot .com/2016/01/ можно обратить внимание на Issue: Asking for unnecessary scopes и Solution: Ask only for the scopes you need   -  person BNK    schedule 05.03.2016
comment
Какой ненужный объем я прошу здесь?   -  person maclir    schedule 05.03.2016
comment
@maclir ты решил эту проблему?   -  person Volodymyr Kulyk    schedule 19.05.2016
comment
@VladimirKulyk Насколько я понял, этот поток не поддерживается для игр.   -  person maclir    schedule 20.05.2016
comment
@maclir посмотри, как я решаю эту проблему. ссылка   -  person Volodymyr Kulyk    schedule 20.05.2016
comment
Я создал задачу в системе отслеживания проблем Android, предложив интегрировать новый процесс входа в Google с Game API: code.google.com/p/android/issues/detail?id=225329 поставьте звездочку, если считаете, что это хорошая идея ;)   -  person Mateus Gondim    schedule 01.12.2016
comment
Я заработал. Проверьте это решение. stackoverflow.com/questions/36247959/   -  person Matthew Hooker    schedule 07.01.2017


Ответы (2)


IMO, вы можете обратиться к следующему примеру кода:

...
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_games);

    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this, this)
            .addApi(Games.API).addScope(Games.SCOPE_GAMES)
            .build();
}

@Override
protected void onStart() {
    super.onStart();
    mGoogleApiClient.connect();
}

@Override
protected void onStop() {
    super.onStop();
    mGoogleApiClient.disconnect();
}


@Override
public void onConnected(Bundle bundle) {
    Log.i("Result", "onConnected");
}

@Override
public void onConnectionSuspended(int i) {
    // Attempt to reconnect
    mGoogleApiClient.connect();
}

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
    Log.e("Result", "onConnectionFailed");

    // If the connection failed, in most of time this means user hasn't logined yet
    // In this case invoke the `startResolutionForResult` will launch the login dialog and account picker
    try {
        if (connectionResult.hasResolution()) {
            connectionResult.startResolutionForResult(m_activity, RC_SIGN_IN);
        }
    } catch (IntentSender.SendIntentException e) {
        e.printStackTrace();
    }
}
...

Подробнее читайте на странице Доступ к API игровых сервисов Play в игре для Android.

Если ваше приложение получает java.lang.IllegalStateException: A fatal developer error has occurred. Check the logs for further information, прочитайте Устранение неполадок в игре для Android.

Некоторые скриншоты:

введите здесь описание изображения введите здесь описание изображения

person BNK    schedule 05.03.2016
comment
Это решение не использует новый вход в поток - person maclir; 05.03.2016
comment
@maclir В Game Play Games есть собственный процесс входа в систему, поэтому new sign in flow здесь не нужен. - person jayatubi; 09.03.2016
comment
@jayatubi и maclir: прочитайте этот блог В начале 2017 года в Play Game Services появятся некоторые изменения. - person BNK; 21.12.2016
comment
Попробуйте это, stackoverflow.com/questions/36247959/ - person Matthew Hooker; 07.01.2017

Аналогичная ошибка была задана в этом сообществе.

Сообщение об ошибке кажется довольно ясным, что в данный момент это невозможно: у игр есть собственный процесс входа в систему. Есть ли особая причина, по которой вы используете оба?

Вот ссылка на Реализация входа в ваши игры.

person gerardnimo    schedule 28.02.2016
comment
Когда я удаляю GOOGLE_SIGN_IN_API, я получаю это исключение: java.lang.NullPointerException: соответствующий API не был запрошен. - person maclir; 28.02.2016