Уникальный идентификатор при входе в Google с помощью Firebase - PullRequest
1 голос
/ 10 ноября 2019

Я создал приложение с несколькими вариантами входа, такими как электронная почта и пароль, или с учетной записью Google.

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

Я храню его в своей базе данных Firebase по следующему пути:

Пользователи (коллекция) -> auth.getuid (документ с уникальным идентификатором) -> UserData (коллекция) -> некоторые поля

Поэтому, когда я вхожу в систему, используя электронную почту и пароль, и использую для аутентификации, я могу получить уникальный идентификатор, используя auth.getid. Таким образом я удостоверяюсь, что не будет 2 одинаковых документа для разных пользователей.

Теперь, если я использую вход в Google, используя следующее:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == RequestSignInCode){

        GoogleSignInResult googleSignInResult = Auth.GoogleSignInApi.getSignInResultFromIntent(data);

        if (googleSignInResult.isSuccess()){

            GoogleSignInAccount googleSignInAccount = googleSignInResult.getSignInAccount();
            FirebaseUserAuth(googleSignInAccount);

            FirebaseFirestore db = FirebaseFirestore.getInstance();

            Map<String, Object> user = new HashMap<>();
            user.put("username", googleSignInAccount.getEmail());
            user.put("email",googleSignInAccount.getEmail());
            user.put("dateCreated", FieldValue.serverTimestamp());

            db.collection( "Users" ).document(auth.getUid()).collection( "UserData" ).add( user );

            Intent intent = new Intent( SignInActivity.this, DiscoverActivity.class );
            startActivity(intent);
            finish();
        }

    }
}

Есть ли что-нибудь эквивалентное? к auth.getuid при использовании входа в Google, чтобы я мог создать уникальный документ для этого пользователя?

Или, что еще лучше, можно ли как-то использовать auth.getID? потому что если во всем моем коде, когда я использовал электронную почту и пароль для входа, я мог запросить, используя auth.getuid, то теперь я не смогу и мне нужно будет создать отдельный запрос на основе some google.id?

Спасибо

1 Ответ

0 голосов
/ 11 ноября 2019

Любой пользователь аутентификации Firebase имеет UID, который вы можете использовать для идентификации этого пользователя. Неважно, с каким провайдером они вошли (электронная почта / пароль, Google или любой другой). Этот UID будет работать даже тогда, когда вы разрешаете одному и тому же пользователю подписывать подписку с разными провайдерами, и вы связываете эти учетные записи .

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