android - 无法解析(Firebase)预期的用户表达式
问题描述
只是试图按照我正在观看的教程进行电话身份验证,我已经写下了如下代码,但我不断收到“用户”预期的错误表达式 - 我对此完全陌生,所以我想这很简单我仍然需要帮助!先感谢您!
mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onVerificationCompleted(@NonNull PhoneAuthCredential phoneAuthCredential) {
signInWithPhoneAuthCredential(phoneAuthCredential);
}
private void signInWithPhoneAuthCredential(PhoneAuthCredential phoneAuthCredential) {
FirebaseAuth.getInstance().signInWithCredential(phoneAuthCredential).addOnCompleteListener(this, new OnCompleteListener<Credential.UserCredential>() {
@Override
public void onComplete(@NonNull Task<Credential.UserCredential> task) {
if(task.isSuccessful())
userIsLoggedIn();
}
private void userIsLoggedIn() {
User = FirebaseAuth.getInstance().getCurrentUser();
if(User != null){
startActivity(new Intent(getApplicationContext(), MainPageActivity.class));
finish();
return;
解决方案
您有一个名为的类"User"
,但您没有在此处定义它的变量,该变量显示 java 表达式错误。实际上,您正在寻找 Firebase 的 User , FirebaseAuth 有 class FirebaseUser
。所以它应该在代码下面来检查当前用户。
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if(user != null){.....
更新(新错误的原因) - 您正在实施PhoneAuthCredential
,但传递基于用户名密码Credential.UserCredential
并实施错误的方法。
你的signInWithPhoneAuthCredential
空虚将是——
private void signInWithPhoneAuthCredential(PhoneAuthCredential phoneAuthCredential) {
FirebaseAuth.getInstance().signInWithCredential(phoneAuthCredential).addOnCompleteListener(this , new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
userIsLoggedIn();
} else {
//
}
}
});
}
你的附加代码将是 -
mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onVerificationCompleted(@NonNull PhoneAuthCredential phoneAuthCredential) {
signInWithPhoneAuthCredential(phoneAuthCredential);
}
@Override
public void onVerificationFailed(@NonNull FirebaseException e) {
//TODO
}
@Override
public void onCodeSent(@NonNull String s, @NonNull PhoneAuthProvider.ForceResendingToken forceResendingToken) {
super.onCodeSent(s, forceResendingToken);
//TODO
}
};
}
private void signInWithPhoneAuthCredential(PhoneAuthCredential phoneAuthCredential) {
FirebaseAuth.getInstance().signInWithCredential(phoneAuthCredential).addOnCompleteListener(this , new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
userIsLoggedIn();
} else {
//
}
}
});
}
private void userIsLoggedIn() {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
startActivity(new Intent(getApplicationContext(), MainPageActivity.class));
finish();
// return;
}
}
请检查文档。
推荐阅读
- python - 随机森林分类器+词袋导致大小问题
- r - 将一列中的信息传播到R中的多个
- json - 如何将 JSON 与不同的顺序进行比较?
- html - 无法将鼠标悬停在内联 SVG 上的矩形上
- c# - Microsoft Graph API 获取用户源名称(提供者名称)?
- python - 在 Flask 中显示新图表
- primeng - 如何在 PrimeNg 中禁用选择文件
- javascript - Mongoose:如何更新数组中的现有元素?
- python-3.x - 使用什么包来自动显示具有适当/短 SI 单位的输出?
- python - 是否可以通过 Python 直接与 Windows 命令行交互?