私は2つのfirebaseアカウントをリンクしようとしています。通常、ユーザーはソーシャルメディアや電子メール、またはanonmusアカウントでログインし、ユーザーは電話でサインインします。私はこれらの2つのアカウントをリンクする必要があります。iOSリンクの2つのfirebaseアカウント
親ビュー
親ビュー内の関数は、電話番号と子ビュー(signUpWithPhoneView)で
class welcomeView: UIViewController, FUIAuthDelegate {
//stores current user
var previosUser = FIRUser()
override func viewDidLoad() {
super.viewDidLoad()
if let user = Auth.auth().currentUser {
previosUser = user
}else{
Auth.auth().signInAnonymously() { (user, error) in
if error != nil {
//handle error
}
previosUser = user!
}
}
}
func signUpWithPhone(){
let vc = signUpWithPhoneView()
vc.authUI?.delegate = self
vc.auth?.languageCode = "ar"
self.present(vc, animated: true)
}
}
をサインアップするために呼び出されます私は
phoneProvider.signIn(withPresenting: self)
FUIPhoneAuthを提示
子ビュー
import UIKit
import FirebaseAuthUI
import FirebasePhoneAuthUI
class signUpWithPhoneView: UIViewController {
fileprivate(set) var authUI = FUIAuth.defaultAuthUI()
var didload = false
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
if !didload { // stops from looping
didload = !didload
guard let authUI = self.authUI else {return}
let phoneProvider = FUIPhoneAuth.init(authUI: authUI)
self.authUI?.providers = [phoneProvider]
>> phoneProvider.signIn(withPresenting: self)
}
}
}
ユーザーがサインインすると、子ビューは自動的に解除され、親ビューで呼び出されるdidSignInWith
関数があります。私は
let provider = PhoneAuthProvider.provider(auth: authUI.auth!)
let credential = PhoneAuthProvider.credential(provider)
previosUser.link(with: credential, completion: { (user, error) in
if error != nil {
print("this is linking two acounts error : " , error)
}
})
を使用してリンクしようとしましたが、エラーが資格
にあったfunc authUI(_ authUI: FUIAuth, didSignInWith user: FirebaseAuth.User?, error: Error?) {
if let user = user{
// link the the two accounts
}else{
}
}
親ビューを以前のユーザーアカウントをリンクする必要があり、ユーザーの携帯電話のアカウント
in ...previosUser.link(with: *credential*, completion: ...
Cannot convert value of type '(String, String) -> PhoneAuthCredential' to expected
argument type 'AuthCredential'
すべてのヘルプは、あなたがauthUI.auth
で、プロバイダを取得して、資格を得るためにそれを使用していない、あなたは現在、インスタンスメソッドcredential
の静的参照を使用しているされている おかげ
私はfirbsaeUIを使用している場合、withVerificationID、verificationCodeはどのようにして収集できますか? を使用 FUIPhoneAuth.init(authUI:authUI).signIn(withPresenting:self) –