JavaScriptでfirebase認証を作成しています。
メールアドレス、パスワードの変更をしたいので以下コードで変更を実施しようとしています。
しかし、firebaseからエラーが返ってきており、メールアドレス、パスワードの更新ができません。
なお、ログインは正常に行えていることからメールアドレスとパスワードは問題ない前提で質問させていただきます。
コンソールに表示されるエラー
javascript
1Status Code: 400 2{code: "auth/user-mismatch", message: "The supplied credentials do not correspond to the previously signed in user."}
初期化
javascript
1const firebaseConfig = { 2 apiKey: process.env.REACT_APP_FIREBASE_API_KEY, 3 authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN, 4 databaseURL: process.env.REACT_APP_FIREBASE_DATABASE_URL, 5 projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID, 6 storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET, 7 messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_ID, 8 appId: process.env.REACT_APP_APP_ID 9}; 10 11export const firebaseApp = firebase.initializeApp(firebaseConfig);
ログインとメールアップデート
javascript
1export const firebaseApi = { 2 // ログイン 3 login: async function(email, password, persistence) { 4 await firebaseApp.auth().signOut(); 5 try { 6 await firebaseApp.auth().setPersistence(persistence); 7 var res = await firebaseApp.auth().signInWithEmailAndPassword(email, password); 8 return await { 9 response: res, 10 isLogin: true, 11 errorCd: '' 12 }; 13 } catch (error) { 14 console.log(error); 15 var errorMsg = this.getFirebaseErrMsg(error.code); 16 return {response: res, isLogin: false, errorMsg: errorMsg}; 17 } 18 }, 19 //メールアドレス変更 20 changeEmailAddress: async function(email,password) { 21 try { 22 const credential = firebase.auth.EmailAuthProvider.credential(email, password); 23 console.log(credential); 24 25 // 以下の処理を実行しようとしてエラーが発生しています。 26 const { user } = await firebase.auth().currentUser.reauthenticateAndRetrieveDataWithCredential(credential); 27 console.log(user); 28 // 再認証完了 29 if (user) { 30 // User is signed in. 31 try { 32 var res = await user.updateEmail(email); 33 return await { 34 isEmailUpdate: true, 35 changeEmailErrorCd: '' 36 }; 37 } catch (error) { 38 console.log(error); 39 return {isEmailUpdate: false, changeEmailErrorCd: this.getFirebaseErrMsg(error.code)}; 40 } 41 } 42 } catch (error) { 43 //reauthenticateAndRetrieveDataWithCredential のエラー 44 console.log(error); 45 return {isEmailUpdate: false, changeEmailErrorCd: this.getFirebaseErrMsg(error.code)}; 46 } 47 } 48}
あなたの回答
tips
プレビュー