2017-07-16 51 views
4

我剛將Firebase Cocoapods從3.15.0升級到4.0.4,並將FirebaseAuth Cocoapods從3.1.1升級到4.0.0。Swift3 iOS -Firebase FIREmailPasswordAuthProvider不工作

我使用電子郵件&密碼來驗證用戶身份。當用戶更改他們的電子郵件,我用下面這個方法,一切工作正常:

FIREmailPasswordAuthProviderID.credential(withEmail: emailTextField.text!, password: passwordTextField.text!) 

現在我更新我得到錯誤信息

Value of type 'String' has no member 'credential'

我枕着docs和它說使用下面的方法:

enter image description here

的問題是我得到同樣的確切的錯誤:

FIREmailAuthProviderID.credential(withEmail: emailTextField.text!, password: passwordTextField.text!) 

Value of type 'String' has no member 'credential'

我原來的代碼如下

import Firebase 
import FirebaseAuth 

let user: User? 

let credential = FIREmailPasswordAuthProviderID.credential(withEmail: emailTextField.text!, password: passwordTextField.text!) 

     if let user = user{ 
      user.reauthenticate(with: credential, completion: { 
       (error) in 
       if error != nil{ 
        //...do something 
        return 
       } 
       //...do something else 
      }) 
     } 

我在做什麼錯?

回答

8

托起

FIREmailAuthProviderID是包含身份驗證提供者ID是一個字符串(這是EmailAuthProviderID在FB 4)恆定。沒有憑證功能,這就是爲什麼你得到這個錯誤。

這裏給Firebase 4 Migration Guide

新格式(和正確的函數調用)的鏈接是

EmailAuthProvider.credential(withEmail email: String, password: String) -> AuthCredential

20171014編輯:更新的鏈接,最新的遷移指南。

+0

嘿謝謝你的幫助!我昨天晚上再次嘗試了,現在我得到了錯誤「使用未解析的標識符'EmailPasswordAuthProvider' –

+0

@LanceSamaria它* EmailAuthProvider *沒有* EmailPasswordAuthProvider * – Jay

+0

哦射擊是的,這是它!謝謝!!! –

0

我沒有使用火力的這個功能不過看來這個鏈接可能會有所幫助

https://firebase.google.com/docs/reference/ios/firebaseauth/api/reference/Classes/FIREmailAuthProvider

+0

感謝您的幫助!實際上,在我發佈問題之前,我嘗試了這種方法,但沒有奏效。現在我想到了,這是一樣的方法。我只是看着它,它是一個類功能。這就是我在我的代碼中使用的問題 –

+0

我正在閱讀Firebase文檔,並且有更新用戶電子郵件的方法 – Amber

+0

user.updateEmail(發送至:「[email protected]」){ 中的錯誤// Check對於錯誤 } – Amber

0

我認爲你需要使用EmailAuthProviderID代替FIREmailAuthProviderID。在Firebase 4.0中不再使用FIR後綴。

希望它可以幫助你:)

+0

感謝您的幫助:我試過(和其他東西的組合),但它仍然無效 –

+0

這不是一個正確的答案,但它的內容是正確的* EmailAuthProviderID *是一個字符串,而不是一個類,所以它沒有.credential功能。 – Jay