Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase Auth-ConfirmPasswordReset,如何从URL获取oobcode来传递函数?_Firebase_Firebase Authentication - Fatal编程技术网

Firebase Auth-ConfirmPasswordReset,如何从URL获取oobcode来传递函数?

Firebase Auth-ConfirmPasswordReset,如何从URL获取oobcode来传递函数?,firebase,firebase-authentication,Firebase,Firebase Authentication,我正在尝试使用firebase auth在我的网站上实现重置密码页面。我收到了重置密码页面的发送电子邮件。现在据我所知,你会收到一封带有链接的电子邮件,你需要点击链接,在这封电子邮件上会有一个密码,需要重置密码。现在,我不知道如何从url中获取所述代码,并已将其显示给用户。是否可以将代码放在电子邮件正文中,并让用户输入代码?如果没有,我如何从url中获取代码并为用户输入,以便用户只能输入密码?我的网站正在使用vue,这就是我目前所拥有的 <template> <div cl

我正在尝试使用firebase auth在我的网站上实现重置密码页面。我收到了重置密码页面的发送电子邮件。现在据我所知,你会收到一封带有链接的电子邮件,你需要点击链接,在这封电子邮件上会有一个密码,需要重置密码。现在,我不知道如何从url中获取所述代码,并已将其显示给用户。是否可以将代码放在电子邮件正文中,并让用户输入代码?如果没有,我如何从url中获取代码并为用户输入,以便用户只能输入密码?我的网站正在使用vue,这就是我目前所拥有的

<template>
  <div class="container">
    <h3>reset pw page</h3>
    <div class="row">
      <form @submit.prevent="ResetPw()" class="col s12">
        <div class="row">
          <div class="input-field col s12">
            <input type="password" id="password" v-model="password" />
            <label>Password</label>
          </div>
        </div>
        <div class="row">
          <div class="input-field col s12">
            <input type="text" id="code" v-model="code" />
            <label>Code</label>
          </div>
        </div>
        <button type="submit" class="btn">Submit</button>
      </form>
    </div>
  </div>
</template>

<script>
import firebase from "firebase/app";
export default {
  data() {
    return {
      password: "",
      code: ""
    };
  },
  methods: {
    ResetPw() {
      firebase
        .auth()
        .confirmPasswordReset(this.code, this.password)
        .then(() => {
          console.log(`Password Changed!`);
        })
        .catch(err => console.log(err));
    }
  }
};
</script>

重置pw页
密码
代码
提交
从“firebase/app”导入firebase;
导出默认值{
数据(){
返回{
密码:“”,
代码:“
};
},
方法:{
ResetPw(){
火基
.auth()
.confirmPasswordReset(this.code,this.password)
.然后(()=>{
log(`Password Changed!`);
})
.catch(err=>console.log(err));
}
}
};

我想我已经完成了所有的工作,我只需要了解如何从链接中获取oobcode&oobcode=

不确定如何从电子邮件正文中获取oobcode,但要在页面加载后从URL中获取代码,您可以参考以下问题:。在表单中,使用空字符串值为代码创建隐藏输入。加载窗口后,将从URL抓取代码,然后您可以将代码和密码传递到函数中

<body>
  <form>
    <input type="text" id='newPass' name='newPass' placeholder='New password'>
    <input type="hidden" id='code' name='code' value="">
    <button type='submit'>Submit</button>
  </form>
</body>

<script>
$(window).load(function () {
    function getParameterByName(name, url) {
        if (!url) url = window.location.href;
        name = name.replace(/[\[\]]/g, '\\$&');
        var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
            results = regex.exec(url);
        if (!results) return null;
        if (!results[2]) return '';
        return decodeURIComponent(results[2].replace(/\+/g, ' '));
    }
    var code = getParameterByName('oobCode')
    document.getElementById('code').value = code;
</script>

提交
$(窗口)。加载(函数(){
函数getParameterByName(名称、url){
如果(!url)url=window.location.href;
name=name.replace(/[\[\]]/g,\\$&');
var regex=new RegExp('[?&]'+name+'(=([^&#]*)和|#|$),
结果=regex.exec(url);
如果(!results)返回null;
如果(!results[2])返回“”;
返回组件(结果[2]。替换(/\+/g');
}
var code=getParameterByName('oobCode')
document.getElementById('code')。value=code;

希望这有帮助!

如果您使用的是react router,它不再解析查询,但您可以通过location.search访问它

const params = new URLSearchParams(this.props.location.search);
const code = params.get('oobCode')
const email = await firebase.auth().verifyPasswordResetCode(code)
或者,不使用this.props.location.search,您可以执行新的
URLSearchParams(window.location.pathname)