Проверьте существующего пользователя перед регистрацией в 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(). Но в этом случае пароль должен оставаться неизменным между двумя сессиями.