Firebase認証は、変更の電子メールの後にユーザーを蹴ります

デイブ:

私は、現在のユーザがログアウトされFirebase SDKを使用して、私のバックエンドでメールアドレスを変更するとき、私は、管理者Firebase SDKを使用して、問題を抱えています。これは私のバックエンドに私のコードです:

const updateUser = (request, response) => { //Aggiorna le info dell'utente, nome e biografia, l'email verrà gestita da firebase
  const idToken = request.params.idToken
  const {
    fullname,
    bio,
    email
  } = request.body
  utils.firebase.auth().verifyIdToken(idToken) //verifico che il token sia vero
    .then(function(decodedToken) {
      let uid = decodedToken.uid //estrapolo lo uid dell'utente

      //modifico l'email su firebase
      utils.firebase.auth().updateUser(uid, {
          email: email,
        })
        .then(function(userRecord) {
          console.log("Firebase: Account aggiornato" + userRecord.toJSON())
          //Ora faccio l'update sul mio database
          utils.pool.query(
            'UPDATE users SET fullname = $1, bio = $2 WHERE uid = $3', [fullname, bio, uid], (error, results) => {
              if (error) {
                throw error
              }
              response.status(200).send(`Ares: User modified with ID: ${results}`)
            }
          )
        })
        .catch(function(error) {
          console.log('Error updating user:', error);
          throw error
        });
    })
}

これは私のフロントエンド(リアクト)です。

const handleSubmitUpdate = (e) => {

  //Chiamo il mio backend, chiedendo di modificare le info dell'utente
  axios.put(`http://localhost:3001/users/` + context.currentUserToken, {
      fullname: user_name,
      bio: user_biography,
      email: user_email
    })
    .then(res => {
      console.log("User updated", res)
    })
}
CaptEmulation:

これが起こる理由は、Firebaseは、認証のために(PKIトークンを暗号化された)JWTを使用していることです。JWTの一部は、ユーザーの電子メールアドレスです。メールアドレスを変更した場合、そのトークンユーザーは、電子メールアドレスが一致しませんので、もはや認証を行うことができます持っています。

メールアドレスを変更した後は、再び使用して、ユーザーがログインする必要がありますauth().signInWith...方法を。フロントエンドは、電子メールが変更されている知っている場合には、積極的に実行することができます。あなたは、認証要求に401応答を取得する場合それ以外の場合、あなたはそれを実行することができます。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=384424&siteId=1