首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Firebase Auth - ConfirmPasswordReset,如何从URL中抓取oobcode来传递正确的函数?

Firebase Auth - ConfirmPasswordReset,如何从URL中抓取oobcode来传递正确的函数?
EN

Stack Overflow用户
提问于 2019-11-13 00:00:57
回答 2查看 928关注 0票数 1

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

代码语言:javascript
复制
<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>

我想我已经完成了所有的工作,我只需要了解如何从链接https://my-project.firebaseapp.com/__/auth/action?mode=&oobCode=中抓取oobcode

EN

回答 2

Stack Overflow用户

发布于 2020-08-24 12:08:41

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

代码语言:javascript
复制
const params = new URLSearchParams(this.props.location.search);
const code = params.get('oobCode')
const email = await firebase.auth().verifyPasswordResetCode(code)

或者,您可以执行新的URLSearchParams(window.location.pathname),而不是使用this.props.location.search

票数 0
EN

Stack Overflow用户

发布于 2020-02-29 03:41:15

不确定如何从电子邮件正文中获取oobCode,但是在页面加载后如何从URL中获取代码,您可以参考这个问题:how-can-i-get-query-string-values-in-javascript。在窗体中,为代码创建一个具有空字符串值的隐藏输入。一旦窗口加载,代码将从URL抓取,然后您可以将代码和密码传递到函数中

代码语言:javascript
复制
<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>

希望这能有所帮助!

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58822372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档