【发布时间】:2018-03-16 10:24:04
【问题描述】:
我想在电话身份验证之前验证 Firebase 中是否存在用户电话号码。如果用户存在,则只会启动 OTP 验证,否则会显示错误。请帮帮我
【问题讨论】:
标签: android firebase firebase-authentication real-time
我想在电话身份验证之前验证 Firebase 中是否存在用户电话号码。如果用户存在,则只会启动 OTP 验证,否则会显示错误。请帮帮我
【问题讨论】:
标签: android firebase firebase-authentication real-time
您可以使用 Admin SDK 通过phoneNumber 查找用户:
admin.auth().getUserByPhoneNumber(phoneNumber)
这将帮助您检查是否已存在使用此电话号码的用户记录。
访问documentation了解更多信息。
您可以创建一个 HTTP 端点来执行此操作。
【讨论】:
所以你想通过从管理面板进入来限制用户群。? 如果是这样,那么如果输入否,则使用匿名身份验证来读取数据库。存在于数据库中,然后仅继续电话身份验证并将这些匿名和电话帐户关联。
【讨论】:
public class PhoneNumberAuthentication extends AppCompatActivity {
private static final int RC_SIGN_IN = 123;
@Override
protected void onCreate( Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FirebaseApp.initializeApp(this);
FirebaseAuth auth = FirebaseAuth.getInstance();
if (auth.getCurrentUser() != null) {
// already signed in
startActivity(new Intent(PhoneNumberAuthentication.this, MainActivity.class));
finish();
} else {
// not signed in
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setAvailableProviders(
Arrays.asList(
new AuthUI.IdpConfig.PhoneBuilder().build())).build(),
RC_SIGN_IN);
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// RC_SIGN_IN is the request code you passed into startActivityForResult(...) when starting the sign in flow.
if (requestCode == RC_SIGN_IN) {
IdpResponse response = IdpResponse.fromResultIntent(data);
// Successfully signed in
if (resultCode == RESULT_OK) {
startActivity(new Intent(PhoneNumberAuthentication.this, MainActivity.class));
finish();
} else {
// Sign in failed
if (response == null) {
// User pressed back button
//showSnackbar(R.string.sign_in_cancelled);
return;
}
if (response.getError().getErrorCode() == ErrorCodes.NO_NETWORK) {
// showSnackbar(R.string.no_internet_connection);
return;
}
// showSnackbar(R.string.unknown_error);
// Log.e(TAG, "Sign-in error: ", response.getError());
}
}
}}
同时添加 build.gradle
implementation 'com.firebaseui:firebase-ui-auth:3.2.2'
【讨论】: