Срок действия токена API для входа в Google

Я использую com.google.android.gms:play-services:8.4.0 для своего приложения для Android. В текущей версии я планирую только локальную аутентификацию без внутреннего сервера. Я реализовал вход в соответствии с пример. Это работает, но через какой-то случайный период времени пользователь автоматически выходит из системы. И пользователь должен снова войти в систему. Я хочу избежать автоматического выхода из системы. Я подозреваю, что срок действия сгенерированного токена истек, и его следует обновить, но, к сожалению, я не могу найти ссылку, как это сделать, в документах Google для Android. Любая помощь очень ценится.


person burzakovskiy    schedule 15.01.2016    source источник
comment
Вы нашли полное решение этой проблемы?   -  person Richa Shah    schedule 10.05.2021


Ответы (2)


Извините, нельзя комментировать в строке. Но что вы подразумеваете под «пользователь автоматически выходит из системы»?

Внутри есть скрытое управление токенами, но токен будет автоматически обновляться по истечении срока его действия.

Предполагая, что вы уже прошли процесс входа в систему. Затем код должен вести себя, как показано ниже, после повторного открытия приложения:

OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient);
    if (opr.isDone()) {
        // This code path should be reached if your last (refreshed) sign-in happens
        // within a short period of time
        GoogleSignInResult result = opr.get();
        handleSignInResult(result);
    } else {
        opr.setResultCallback(new ResultCallback<GoogleSignInResult>() {
            @Override
            public void onResult(GoogleSignInResult googleSignInResult) {
                // This code path should be reached if your last (refreshed)
                // sign-in is a while back and token needs to be refreshed. But you
                // should still be able to get a successful googleSignInResult back.
                handleSignInResult(googleSignInResult);
            }
        });
    }

Не могли бы вы вставить свой код?

person Isabella Chen    schedule 29.01.2016

Я предлагаю использовать тот же SilentSignIn, что и Изабелла, но с некоторыми изменениями. Я не смог заставить работать предложенный Google способ реализации SilentSignIn (который точно соответствует коду, опубликованному Изабеллой). Вместо этого я переместил opr.setResultCallback выше закрывающего его оператора if, а затем удалил сам оператор if.

Вы можете увидеть мой более полный ответ здесь: https://stackoverflow.com/a/43059487/4561506

person Elliott    schedule 28.03.2017