提供者的FirebaseAuth,JWT在调用updateEmailUpdate之前不包含电子邮件地址

时间:2019-01-31 10:29:01

标签: swift firebase firebase-authentication jwt

当我致电getIDToken()

时,我想在JWT中包含来自提供者(Facebook)的电子邮件地址

getIDToken()之后我叫Auth.auth()signInAndRetrieveData()

JWT在解码时没有电子邮件地址信息

但是当我在getIDToken()之后打电话给updateEmail()时有一个电子邮件地址

func firebaseGetIDToken(completion: @escaping (_ idToken: String?, _ error: Error?) -> ()) {
        let currentUser = Auth.auth().currentUser
        currentUser?.updateEmail(to: "abcd@naver.com") { (error) in
            print("update email \(String(describing:error?.localizedDescription))")
        } <<-- there is no an email address without this code
        currentUser?.getIDToken{ idToken, error in
            if let error = error {
                // Handle error
                print("firebaseGetIDToken error ::: \(String(error.localizedDescription))")
                completion(nil, error)
                return;
            }
            completion(idToken, nil)
        }

    }

当我致电getIDToken()时,如何在JWT中包含一个电子邮件地址?

1 个答案:

答案 0 :(得分:0)

通过Facebook登录时,您将获得一个providerData对象附加到您的用户对象上。在此提供者数据对象中,您将找到该用户的电子邮件。您在检索JWT时未在JWT中看到它的原因是,没有电子邮件附加到 Firebase 用户。然后,当您调用updateEmail()时,它将使用该电子邮件更新Firebase用户,然后它将在JWT中