Коллеги, такая проблема. Авторизую пользователей с помощью 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. Прошу помочь разобраться а лучше показать на примере. Спасибо.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть картинка (help_15jpg), размер соответствует разрешению экрана,(если взять картинку большего размера, то она так и выглядит большой съезжая...
Подскажите, как переместить JPanel с середины сверху (по умолчанию) влево по середине? GridLayout хранит в себе поле кнопок 3х3 - все это содержится...
Есть задача на Java (пока под консоль): Пользователю предлагается вводить числа в диапазоне от 1 до 100 до тех пор, пока не надоестКогда пользователь...
Для чего эти аннотации, и какие плюсы и минусы AccessTypeFIELD и AccessType