Авторизация с помощью google и запись пользователя в fireBase DataBase

170
26 ноября 2018, 06:50

Коллеги, такая проблема. Авторизую пользователей с помощью google sign in. Далее мне нужно достать емаил, имя и по возможности фото пользователя и записать все это в БД fireBase.

Класс авторизации

public static final int SIGN_IN_CODE = 777;

private GoogleApiClient googleApiClient;
private ActivityMainBinding binding;
private GoogleSignInOptions googleSignInOptions;
private DatabaseReference dataBaseUsers;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
    googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();
    googleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this, this)
            .addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)
            .build();
    //verification method is user authorized
    authorizationCheck();
    binding.buttonGoogle.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
            startActivityForResult(intent, SIGN_IN_CODE);
        }
    });
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
//verification of authorization on the google side
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == SIGN_IN_CODE) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        handleSignInResult(result);
    }
}
//verification of authorization result
private void handleSignInResult(GoogleSignInResult result) {
    if (result.isSuccess()) {
        GoogleSignInAccount googleSignInAccount = result.getSignInAccount();
        String mEmail = googleSignInAccount.getEmail();// Вытягиваем емаил, который получили при авторизации
        Users users = new Users();
        users.setEmail(mEmail);
        dataBaseUsers.child(mEmail).setValue(users); // помещаем емаил в БД 
        goMapScreen();
    } else {
        Toast.makeText(this, R.string.not_log_in, Toast.LENGTH_SHORT).show();
    }
}
//method of transition to another activity
private void goMapScreen() {
    Intent intent = new Intent(this, ScreenMapActivity.class);
    startActivity(intent);
}
//verification method is user authorized
public void authorizationCheck(){
    if(GoogleSignIn.getLastSignedInAccount(getApplicationContext()) != null){
        Intent intent = new Intent(this, ScreenMapActivity.class);
        startActivity(intent);
    }
}

}

Сейчас все ок, авторизация проходит успешно. Я могу проверить войдя в профиль пользователя. Только вот кроме самой записи в БД firebase. Новый, авторизованный пользователь, не попадает в БД. Ну и конечно я не могу проверить, вытягиваю ли я email или нет.

Коллеги, прошу не ругаться сильно если что не так. Только изучаю android. Прошу помочь разобраться а лучше показать на примере. Спасибо.

READ ALSO
Размер картинки и libgdx

Размер картинки и libgdx

Есть картинка (help_15jpg), размер соответствует разрешению экрана,(если взять картинку большего размера, то она так и выглядит большой съезжая...

136
Расположение JPanel в окне с помощью FlowLayout

Расположение JPanel в окне с помощью FlowLayout

Подскажите, как переместить JPanel с середины сверху (по умолчанию) влево по середине? GridLayout хранит в себе поле кнопок 3х3 - все это содержится...

119
Сумма одинаковых чисел Java [закрыт]

Сумма одинаковых чисел Java [закрыт]

Есть задача на Java (пока под консоль): Пользователю предлагается вводить числа в диапазоне от 1 до 100 до тех пор, пока не надоестКогда пользователь...

163
Для чего AccessType.FIELD и AccessType.PROPERTY в @Access?

Для чего AccessType.FIELD и AccessType.PROPERTY в @Access?

Для чего эти аннотации, и какие плюсы и минусы AccessTypeFIELD и AccessType

206