Android解析使用电子邮件或用户名登录
我正在尝试使用parse制作一个android应用程序,允许用户使用用户名或电子邮件登录。我试着查询一个具有提供的电子邮件地址的对象,然后获取该对象的用户名进行登录。但是,我遇到了以下错误: “com.parse.ParseQuery”中的“getFirstInBackgroundcom.parse.GetCallback”不能应用于“anonymous com.parse.GetCallback com.parse.ParseObject>” 我是应用程序开发和解析新手,所以我不完全确定这意味着什么。据我所知,它不允许我使用getFirstInBackground,因为它适用于parseUser,我正在使用ParseObjects,但我使用的代码来自前面的stackoverflow问题,这是一个有效的答案: 这是我的密码:Android解析使用电子邮件或用户名登录,android,email,parse-platform,Android,Email,Parse Platform,我正在尝试使用parse制作一个android应用程序,允许用户使用用户名或电子邮件登录。我试着查询一个具有提供的电子邮件地址的对象,然后获取该对象的用户名进行登录。但是,我遇到了以下错误: “com.parse.ParseQuery”中的“getFirstInBackgroundcom.parse.GetCallback”不能应用于“anonymous com.parse.GetCallback com.parse.ParseObject>” 我是应用程序开发和解析新手,所以我不完全确定这意味
// Do this to allow for username or email log in
if (mEmail.indexOf("@") != -1) {
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("email", mEmail);
query.getFirstInBackground(new GetCallback<ParseObject>() {
public void done(ParseObject object, ParseException e) {
if (object == null) {
Log.d("score", "The getFirst request failed.");
} else {
String actualUsername = object.getString("username");
ParseUser.logInInBackground(actualUsername, mPassword, new LogInCallback() {
@Override
public void done(ParseUser parseUser, ParseException e) {
if (e != null) {
// TODO: Show error message
Toast.makeText(LoginActivity.this, "Credentials incorrect", Toast.LENGTH_LONG).show();
} else {
// Start Intent for activity
// TODO: Choose activity
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
}
}
});
}
}
});
根据,该方法的签名如下:
class com.parse.ParseQuery<T> {
public void getFirstInBackground(GetCallback<T> callback)
}
您正试图使用ParseObject类型的GetCallBack查询ParseUser 在代码中用ParseUser替换ParseObject的所有实例
query.getFirstInBackground(new GetCallback<ParseUser>() {
public void done(ParseUser user, ParseException e) {
if (object == null) {
Log.d("score", "The getFirst request failed.");
} else {
String actualUsername = user.getUsername();
ParseUser.logInInBackground(actualUsername, mPassword, new LogInCallback() {
@Override
public void done(ParseUser parseUser, ParseException e) {
if (e != null) {
// TODO: Show error message
Toast.makeText(LoginActivity.this, "Credentials incorrect", Toast.LENGTH_LONG).show();
} else {
// Start Intent for activity
// TODO: Choose activity
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
}
}
});
}
}
});
希望这有帮助
final String userOrEmal = editTextEmailOrUserName.getText().toString().trim();
final String mpassword = editTextPassword.getText().toString().trim();
if (userOrEmal.contains("@")) {
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("email", userOrEmal);
query.getFirstInBackground(new GetCallback<ParseUser>() {
@Override
public void done(ParseUser object, ParseException e) {
if (object != null) {
ParseUser.logInInBackground(object.getString("username"), mpassword, new LogInCallback() {
public void done(ParseUser user, ParseException e) {
if (user != null) {
Log.v("login", "secessful");
} else {
Log.v("login", "fail");
}
}
});
} else {
}
}
});
} else {
ParseUser.logInInBackground(userOrEmal,mpassword, new LogInCallback() {
public void done(ParseUser user, ParseException e) {
if (user != null) {
Log.v("login", "secessful");
} else {
Log.v("login", "fail");
}
}
});
}
final String userOrEmal = editTextEmailOrUserName.getText().toString().trim();
final String mpassword = editTextPassword.getText().toString().trim();
if (userOrEmal.contains("@")) {
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("email", userOrEmal);
query.getFirstInBackground(new GetCallback<ParseUser>() {
@Override
public void done(ParseUser object, ParseException e) {
if (object != null) {
ParseUser.logInInBackground(object.getString("username"), mpassword, new LogInCallback() {
public void done(ParseUser user, ParseException e) {
if (user != null) {
Log.v("login", "secessful");
} else {
Log.v("login", "fail");
}
}
});
} else {
}
}
});
} else {
ParseUser.logInInBackground(userOrEmal,mpassword, new LogInCallback() {
public void done(ParseUser user, ParseException e) {
if (user != null) {
Log.v("login", "secessful");
} else {
Log.v("login", "fail");
}
}
});
}