Firebase - 是否可以阻止电话号码注册

时间:2020-12-19 18:01:56

标签: ios swift firebase-realtime-database firebase-authentication

我使用电话身份验证对用户进行身份验证。如果我想阻止来自不同用户的一组特定电话号码注册,这是可能的。例如,他们被禁赛,被踢出平台,我在参考资料中保留了他们被禁号码的副本。他们尝试使用相同的电话号码再次注册。他们不能再继续下去了。

我想到的一种方法是,一旦他们输入了他们的电话号码,我就可以在让他们继续发送短信之前对该参考进行检查。我想知道是否已经内置了更好的方法。也许通过控制台?

电话号码:

PhoneAuthProvider.provider().verifyPhoneNumber(phoneNumber, uiDelegate: nil) { (verificationID, error) in

    // phone is verified, do a check on the kicked out ref before they can proceed to sms
}

短信:

let credential = PhoneAuthProvider.provider().credential(withVerificationID: verificationID, verificationCode: smsCode)

Auth.auth().signIn(with: credential, completion: { (authDataResult, error) in

    // user is authenticated let them proceed inside the app or block them here
})

3 个答案:

答案 0 :(得分:1)

您可以升级到支持 blocking functions 的 Identity Platform。您可以使用 beforeCreate 事件来阻止注册:

export.beforeCreate = authClient.functions().beforeCreateHandler((user, context) => {
  if (isDisallowed(user.phoneNumber)) {
    throw new gcipCloudFunctions.https.HttpsError(
     'invalid-argument', `"${user.phoneNumber}" is unauthorized.`);
  }
});

答案 1 :(得分:0)

您当然可以尝试在客户端应用上屏蔽该号码,但这并不安全。客户端应用程序代码可能会受到损害,不应信任。您的解决方案应位于您控制的后端,并且无需发布应用的新版本即可进行更新。

您可以做的一件事是使用 Cloud Functions 编写一个 auth onCreate trigger,用于检查刚刚创建的帐户的电话号码,如果您不想保留它,则使用 Firebase Admin SDK to immediately delete the account

答案 2 :(得分:0)

您最好使用后端进行身份验证。

当然,您可以将身份验证代码放在您的应用中。

当用户尝试注册您的平台时,应用可能会扫描被屏蔽的电话号码列表。

但它不利于安全。

你能确保你的应用永远不会破解吗?

如果可能,你可以做到。

谢谢。