Получите аккаунт Google в другой активности - PullRequest
0 голосов
/ 02 ноября 2019

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

Я использовал google signin в моем login activity, все работает отлично. Пользователь переходит к another activity, затем к третьему, а затем к другому. В fourth activity мне нужен подписанный пользователь Google (на самом деле это действие по использованию Google Play Services, достижений и т. Д.) Каков наилучший и более короткий способ получить подписанного пользователя? Нужно ли делать ВСЕ процессы входа снова?

ОБНОВЛЕНИЕ:

Как уже упоминалось, обновленный код в моей деятельности выглядит следующим образом:

@Override
protected void onStart() {
    super.onStart();        
    if (!isSignedIn()) {
        signInSilently();
    }

И

private boolean isSignedIn() {
    return GoogleSignIn.getLastSignedInAccount(this) != null;
}
private void signInSilently() {
    Log.d(TAG, "signInSilently()");

    mGoogleSignInClient.silentSignIn().addOnCompleteListener(this,
            new OnCompleteListener<GoogleSignInAccount>() {
                @Override
                public void onComplete(@NonNull Task<GoogleSignInAccount> task) {
                    if (task.isSuccessful()) {
                        Log.d(TAG, "signInSilently(): success");
                        onConnected(task.getResult());
                    } else {
                        Log.d(TAG, "signInSilently(): failure", task.getException());
                        onDisconnected();
                    }
                }
            });

, поскольку я не хочу иметь новый логин (кнопки и т. Д.). Сначала я думаю, что пользователь должен быть подключен. Но даже если он отключен, signInSilently () должен снова подключить пользователя.

Моя последняя проблема в том, что я получаю исключение нулевого объекта в:

mLeaderboardsClient.submitScore(getString(R.string.leaderboard_leaderboard),



private void onConnected(GoogleSignInAccount googleSignInAccount) {
    Log.d(TAG, "onConnected(): connected to Google APIs");

    mAchievementsClient = Games.getAchievementsClient(this, googleSignInAccount);
    mLeaderboardsClient = Games.getLeaderboardsClient(this, googleSignInAccount);
    mEventsClient = Games.getEventsClient(this, googleSignInAccount);
    mPlayersClient = Games.getPlayersClient(this, googleSignInAccount);

, как я могу понять из-заНЕТ пользователя GOOGLE. Что еще мне нужно сделать, чтобы мой подписанный гугл-пользователь?

1 Ответ

1 голос
/ 02 ноября 2019

Вы можете использовать эту функцию, чтобы проверить, вошел ли пользователь в систему или нет.

private boolean isSignedIn() {
  return GoogleSignIn.getLastSignedInAccount(context) != null;
}

https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignIn

public static GoogleSignInAccount getLastSignedInAccount (Контекст контекста)

Получает последнюю учетную запись, с которой пользователь вошел в систему.

Возвраты: GoogleSignInAccount из последнего известного успешного входа. Если пользователь никогда ранее не входил в систему или не выполнил или отменил доступ, возвращается значение null.

Если возвращается значение null, просто повторно зарегистрируйте пользователя. это все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...