Проверьте существующего пользователя перед регистрацией в Facebook/Twitter Parse Android SDK

Я работаю с Parse Android SDK, и у меня есть два варианта регистрации в моей активности регистрации. Регистрация через твиттер и регистрация через фейсбук.

Вот проблема: если я зарегистрируюсь через Facebook, а затем выйду из системы, а затем снова зарегистрируюсь через Twitter, вместо того, чтобы связывать нового пользователя для анализа в Twitter со старым пользователем для анализа в Facebook, он создает нового пользователя, даже если электронная почта, используемая как в Facebook, так и в Twitter была так же.

Чего я хочу добиться, так это проверить, существует ли пользователь с тем же адресом электронной почты, если нет, то создать нового пользователя и, если он существует, связать метод регистрации (Facebook или Twitter) с существующим пользователем анализа.

Любая помощь будет принята с благодарностью. Спасибо

private void loginWithTwitter() {
    signUpProgressDialog.show();
    ParseTwitterUtils.logIn(this, new LogInCallback() {
        @Override
        public void done(ParseUser user, ParseException e) {
            signUpProgressDialog.dismiss();
            if(e==null) {
                if (user == null) {
                    Log.d(TAG, "Uh oh. The user cancelled the Twitter login.");
                } else if (user.isNew()) {
                    Log.d(TAG, "User signed up and logged in through Twitter!");
                    startAppropriateActivity("TWITTER_NEW");
                } else {
                    Log.d(TAG, "User logged in through Twitter!");
                    startAppropriateActivity("TWITTER_OLD");
                }
            }else Log.d(TAG,"Twitter Parse Error");
        }
    });
}

private void loginWithFacebook() {
    signUpProgressDialog.show();
    List<String> permissions = Arrays.asList("public_profile", "email");
    ParseFacebookUtils.logIn(permissions, this, new LogInCallback() {
        @Override
        public void done(ParseUser user, ParseException e) {
            signUpProgressDialog.dismiss();
            if(e==null) {
                if (user == null) {
                    Log.d(TAG, "Uh oh. The user cancelled the Facebook login.");
                } else if (user.isNew()) {
                    Log.d(TAG, "User signed up and logged in through Facebook!");
                    startAppropriateActivity("FACEBOOK_NEW");
                } else {
                    Log.d(TAG, "User logged in through Facebook!");
                    startAppropriateActivity("FACEBOOK_OLD");
                }
            }else Log.d(TAG,"Facebook Parse Error");
        }
    });
}

1 ответ

Вы можете установить электронную почту пользователя в качестве содержимого поля имени пользователя в объекте ParseUser. Поэтому в следующий раз, когда пользователь попытается зарегистрироваться с тем же именем пользователя, вы получите ParseException с кодом 202 - "Пользователь с этими именем пользователя и паролем уже зарегистрирован", и в этом случае вы можете вызвать метод login(). Но в этом случае пароль должен оставаться неизменным между двумя сессиями.

Другие вопросы по тегам