sendSignInLinkToEmail函数是否适用于firebase模拟器?
sendSignInLinkToEmail 函数是否适用于 firebase 模拟器?我尝试了以下代码。Firebase 托管会发送电子邮件,但 Firebase 模拟器不会。(创建和登录正在使用模拟器。)如果有人知道,请告诉我。
"firebase": "^8.1.1"
“码头工人”:“v19.03.13”
“节点(在 docker 中)”:“14-alpine”
“vue(在 docker 中)”:“^2.6.11”
sourceCode firebase.js(初始化)
import fbapp from "firebase/app"
import "firebase/auth"
const config = {
apiKey: process.env.VUE_APP_FIB_API_KEY,
authDomain: process.env.VUE_APP_FIB_AUTHDOMAIN,
databaseURL: process.env.VUE_APP_FIB_FIRESTORE_URL,
projectId: process.env.VUE_APP_FIB_PROJECT_ID,
storageBucket: process.env.VUE_APP_FIB_STRG_BUCKET,
messagingSenderId: process.env.VUE_APP_FIB_MSG_ID,
corsConfiguration: [{ maxAgeSeconds: 3600 }],
measurementId: process.env.VUE_APP_FIB_MEASUREMENT_ID,
appId: process.env.VUE_APP_FIB_APP_ID
}
const firebase = fbapp.initializeApp(config);
export default {
initAuth() {
firebase.auth().useEmulator('http://localhost:9099/')
return auth;
}
源代码 authMail.vue
import Firebase from '@/firebase';
const fb_auth = Firebase.initAuth();
// ~~ ~~ //
methods: {
async sendAuthMail(email){
const actionCodeSettings = {
url: process.env.VUE_APP_URL + '/signup/authorize' + redirect_param,
handleCodeInApp: true
}
fb_auth.sendSignInLinkToEmail(email, actionCodeSettings)
.then(function() {
window.localStorage.setItem('emailForSignIn', email);
return true
})
.catch(function(error) {
return error
});
},
回答
正如有关模拟电子邮件、电子邮件链接和匿名身份验证的文档所说:
为了使用电子邮件链接流测试电子邮件验证/登录,模拟器会打印一个指向执行 firebase emulators:start 的终端的 URL。
i 要验证电子邮件地址 customer@ex.com,请点击以下链接:
http://localhost:9099/emulator/action?mode=verifyEmail&lang=en&oobCode=XYZ123&apiKey=fake-api-key
将链接粘贴到浏览器中以模拟验证事件,并检查验证是否成功。
{ "authEmulator": { "success": "The email has been successfully verified.", "email": "customer@example.com" } }
所以模拟器不发送邮件,你需要检查模拟器的控制台输出中是否有链接来验证并登录。