ここで初心者です。私がやろうとしているのは、ユーザーが自分の電話番号で登録することができるようにすることです。電話番号が管理者によって先に追加された場合に限ります。どんなヘルプやリソースへのリンクも非常に役に立ちます。ありがとう!Firebase:管理者によって追加された電話番号に基づいてユーザを登録する
答えて
基本的にあなたの管理者アカウントを使って、ノード内に「良い」番号を追加して、「white_list」とその参照whiteListRefを追加する必要があります。
その後、あなたは彼の電話番号を介してユーザを登録するには2つの本質的なFirebase方法が必要になり、最初のものは次のとおりです。
PhoneAuthProvider.provider().verifyPhoneNumber(phone_number) { }
これは、ユーザーに確認コードを送信します。
その後、あなたは、このメソッドを追加する必要があります。
Auth.auth().signIn(with: credential) { }
資格は、あなたが最初の方法から得たverificationID、そして彼の番号が正しかった場合、ユーザーが自分の電話番号に受け取った確認コードを使用して作成されます。あなたのケースでは
let credential = PhoneAuthProvider.provider().credential(
withVerificationID: verificationID,
verificationCode: verificationCode)
、あなたはあなたのユーザーがで入力した電話番号は(あなたの管理者がwhite_listノードに追加した)ホワイトリストの中にあることを確認する必要があります。データベースの構造によっては、たとえば、あなたがこのような方法で使用できます。
func registerPhoneNumber(_ phoneNumber: String, completion: @escaping() -> Void) {
PhoneAuthProvider.provider().verifyPhoneNumber(phoneNumber) { [weak self] (verificationID, error) in
guard error == nil else {
return
}
self?.checkNumberEligibility(phoneNumber) { (isNumberOkay) in
guard isNumberOkay else {
return
}
UserDefaults.standard.set(verificationID, forKey: "authVerificationID")
}
}
}
func verifyCode(_ verificationCode: String, completion: @escaping() -> Void) {
guard let verificationID = UserDefaults.standard.string(forKey: "authVerificationID") else {
return
}
let credential = PhoneAuthProvider.provider().credential(
withVerificationID: verificationID,
verificationCode: verificationCode)
Auth.auth().signIn(with: credential, completion: { (user, error) in
guard error == nil else {
return
}
completion()
})
}
これは働くだろう、しかし、へ:最後に
func checkNumberEligibility(_ phoneNumber: String, completion: @escaping(Bool) -> Void) {
whiteListRef.observeSingleEvent(of: .value, with: { (snapshot) in
guard let numberEligibility = snapshot.childSnapshot(forPath: "eligibility").value as? String else { return }
if numberEligibility == "good" {
completion(true)
} else {
completion(false)
}
})
を、あなたはこのような何かを持っているでしょうこのようにすると、セキュリティ問題にさらされる可能性のある人物(つまり、あなたのアプリの非ユーザであっても)をホワイトリストノードにアクセスさせる必要があることを意味します。したがって、このシステムを実装する前にそれを検討してください。
質問がありましたらお知らせください。
あなたは正しいです。私はセキュリティの問題を考えなかった。携帯電話番号は公開される。答えをありがとう。私はそれから学んだ。 – user165242
問題はない、私は助けることができてうれしい – Alex
- 1. 電話番号による登録
- 2. 電子メールのないAzure AD B2Cにユーザ登録すると、電話番号
- 3. 国番号に基づいて電話番号を確認する
- 4. 電話番号に登録されているBroadcastReceiverの番号を調べるには
- 5. Firebaseユーザの電話番号の確認
- 6. アンドロイドの電話番号登録
- 7. 電話番号に " - "を追加する
- 8. データベースから電話番号に基づいて選択
- 9. 国番号に基づく電話番号の書式設定
- 10. Magentoは管理パネルの電話番号にバリデーションを追加します
- 11. Devise - 管理者が登録アカウントを追加できるようにする
- 12. 正規表現に基づいて電話番号を動的にフォーマットする
- 13. (W10)ウェブブラウザの電話番号を管理するためのアプリケーションを登録する(skypeなど)
- 14. 登録時にFirebaseデータベースにユーザ名を追加するには?
- 15. Node.jsを使ってFirebaseにユーザを登録するには?
- 16. サイト内に存在するすべての電話番号フィールドのカスタム電話番号検証の追加2.1.4
- 17. 電話番号がionic3のfirebaseの電話番号
- 18. 電子メールまたは携帯電話番号で登録する
- 19. Firebaseの管理者としてユーザを更新するには
- 20. Parse:ユーザーに電話番号を登録させる方法を教えてください。
- 21. 登録されたモデルが管理者に表示されない
- 22. Firebase通知に登録されているすべてのユーザの登録トークンにアクセスできますか?
- 23. buddypressグループ管理者に管理者を追加させる
- 24. 値に基づいて管理者のDjangoフォームフィールドをカスタマイズする
- 25. Smart Lockに電話番号を登録することはできますか?
- 26. firebaseを使用した登録とログイン、ユーザ名の追加
- 27. asp.netコアアイデンティティの電話番号で登録とログイン
- 28. アドワーズ広告オフライン電話番号のご登録
- 29. 電話番号でユーザをログイン
- 30. 登録モバイルYowsupを使用してのWhatsAppと番号と電話
ユーザがFirebase認証で自分自身を認証するのを防ぐ方法はありません。しかし、他のリソースを使用できないようにすることができます。 Firebaseデータベースでそれを行う方法の詳細については、https://firebase.google.com/docs/database/security/user-security –
を参照してください。あなたとアレックスの答えから、私は思っていなかったと思います。手を差し伸べる前に携帯電話番号を確認しておくと、問題が発生してしまいます。おそらく私は管理者が携帯電話番号を入力し、そのコード/パスワードを使用してログインして後でパスワードを変更するようユーザーに尋ねるとすぐに、(おそらく第三者経由で)SMSの確認を送信するだけです。 [編集:可読性] – user165242