Как изменить адрес электронной почты в Google Войти - PullRequest
0 голосов
/ 24 октября 2018
signInButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
        startActivityForResult(intent, SIGN_IN_CODE);
    }
});

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

public class AccountSettings extends Fragment {

View rootView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    rootView = inflater.inflate(R.layout.settings_account, container, false);

    Button mButton = (Button) rootView.findViewById(R.id.change);

    mButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
            String mEmail = user.getEmail();

            user.updateEmail(mEmail)
                    .addOnCompleteListener(new OnCompleteListener<Void>() {
                        @Override
                        public void onComplete(@NonNull Task<Void> task) {
                            if (task.isSuccessful()) {
                                Log.d("TAAAAGGGG", "User email address updated.");
                            }
                        }
                    });
        }
    });

 return rootView;
}

}

..............................................................................................................

1 Ответ

0 голосов
/ 24 октября 2018

Вам необходимо пройти повторную аутентификацию вашего пользователя.Поскольку в соответствии с документацией изменение основного адреса электронной почты является чувствительным действием.

Для повторной проверки подлинности вы можете использовать такой код, переменная result имеет GoogleSignInResult при успешном входе.

GoogleSignInAccount acct = result.getSignInAccount();

// credential
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
FirebaseAuth.getInstance().getCurrentUser().reauthenticate(credential).addOnCompleteListener(new OnCompleteListener<Void>() {
                        @Override
                        public void onComplete(@NonNull Task<Void> task) {
                            Log.d(TAG, "User re-authenticated.");

                            //Now change your email address

                            FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
                            user.updateEmail("user@example.com")
                                    .addOnCompleteListener(new OnCompleteListener<Void>() {
                                        @Override
                                        public void onComplete(@NonNull Task<Void> task) {
                                            if (task.isSuccessful()) {
                                                Log.d(TAG, "User email address updated.");
                                            }
                                        }
                                    });

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