0 ios firebase swift firebase-authentication
正确实施后,Firebase电话身份验证会为开发人员提供验证码,必须键入验证码以确认手机。
当您检查verificationIDFirebase提供的内容以及验证码时,您将得到验证并因此登录。
使用此方法,用户可以确认代码并登录:
let credential = PhoneAuthProvider.provider().credential(
withVerificationID: verificationID,
verificationCode: verificationCode)*
PhoneAuthProvider.provider().verifyPhoneNumber(self.phoneNum.text!, uiDelegate: nil) { (verificationID, error) in
UserDefaults.standard.set(verificationID, forKey: "authVID")
}
Run Code Online (Sandbox Code Playgroud)
现在,您需要发送验证码才能登录。
我得到verificationID并保存到UserDefaults。
但是之后,当代码过期时,我将无法继续登录,因为它再次要求我提供另一个验证码。
如何仅使用verificationIDfirebase生成的登录名?
我尝试了该方法:
Auth.auth().signIn(withCustomToken: UserDefaults.standard.string(forKey: "authVID") ?? "")
Run Code Online (Sandbox Code Playgroud)
但是firebase表示身份验证令牌无效。
我不知道我可以使用哪种方法仅使用firebase提供的令牌进行登录。
首先,您需要调用该方法以验证手机号码。验证手机号码后,您将获得OTP验证的手机号码。所以写下面的方法来验证手机号码。
PhoneAuthProvider.provider().verifyPhoneNumber(phoneNumber, uiDelegate: nil) { (verificationID, error) in
if let error = error {
// Show alert here
return
}
// Sign in using the verificationID and the code sent to the user
// Here your can store your verificationID in user default and later used for sign in. Or pass this verification id to your next view controller for OTP verification.
UserDefaults.standard.set(verificationID, forKey: "authVerificationID")
}
Run Code Online (Sandbox Code Playgroud)
OTP验证屏幕上的下一个,当用户输入时,OTP您可以创建以下凭据进行登录。
verificationId-我们已存储在UserDefault
verificationCode-OTP中,可通过移动消息使用。
// Get verification Id from User Default
let verificationID = UserDefaults.standard.string(forKey: "authVerificationID")
let credential = PhoneAuthProvider.provider().credential(
withVerificationID: verificationID,
verificationCode: verificationCode)
Run Code Online (Sandbox Code Playgroud)
现在调用签名方法。
Auth.auth().signIn(with: credential) { (user, error) in
if let error = error {
// ...
return
}
// User is signed in
// Here sign in completed.
}
}
Run Code Online (Sandbox Code Playgroud)
在这里登录完成,现在您可以导航到成功登录后将打开的屏幕。
要在重新打开应用程序且您想直接设置主屏幕时设置主屏幕,请编写以下代码。
func setInitialViewController() {
if Auth.auth().currentUser != nil {
// setup home screen
} else {
//Setup login screen
}
}
Run Code Online (Sandbox Code Playgroud)
并从AppDelegate的didFinishLaunchingWithOptions方法中调用上述方法。
我希望这能帮到您。
| 归档时间: |
|
| 查看次数: |
4253 次 |
| 最近记录: |