【问题标题】:Firebase reset password link not workingFirebase 重置密码链接不起作用
【发布时间】:2016-11-04 18:19:40
【问题描述】:

我正在使用 firebase 对我的 android 应用中的用户进行身份验证。我为用户提供了在登录窗口中重置密码的选项。当用户单击按钮时,它会成功发送电子邮件。但是当用户点击链接时,它总是显示

再次尝试重设密码。您重设密码的请求已过期或该链接已被使用”

有人知道我哪里错了吗?我尝试使用来自不同设备的不同电子邮件 ID 登录。还是行不通。我正在使用“com.google.firebase:firebase-auth:9.2.0”。

2016 年 8 月 31 日更新

我联系了 Firebase 支持,看起来 API 密钥存在一些错误。如果您更改浏览器 API 密钥,它不会得到更新。现已修复此错误,重置密码功能正常工作。

【问题讨论】:

  • 我刚刚测试了重置密码,它按预期工作。我推测这里使用的 api 密钥不正确。我不知道为什么。 api 密钥附加到重置密码链接“&apiKey=API_KEY”。想想您在配置项目时可能在 FIrebase 控制台中所做的一些更改。我会从那里开始。您可以检查 web auth sn-p 代码。它在应用程序初始化中有一个 api 密钥。尝试使用该 sn-p 中的浏览器 api 密钥,并将该密钥附加到重置密码链接。
  • @bojeil “API_KEY”没有这样的字段。我们是否要添加 API 密钥字段?如果是,在哪里?在电子邮件模板中?
  • 这里有同样的问题。我还没有碰过电子邮件模板。该链接末尾包含&apiKey=CORRECT_KEY,但该参数未出现在模板中。
  • @TravisChristian 没错,api_key 没有字段。我的模板 %LINK% 值是“myappname.firebaseapp.com/__/auth/action”我没有在那里修改任何东西。我刚刚添加了“回复”电子邮件并在模板中更改了发件人的姓名。其余设置保持不变。
  • @bojeil ,是的。它在那里。电子邮件中的链接如下所示。 “https : // appname.firebaseapp.com/__/auth/action?mode=resetPassword&oobCode=someCharacters&apiKey=someCharacters ”(为便于阅读而添加了空格)但是每当我们单击时,您都会收到此问题中报告的消息。

标签: android firebase firebase-authentication


【解决方案1】:

如果您在Google API console 中为您的应用的 API 密钥列出了任何 HTTP 引荐来源网址,则需要包含应用本身,这就是电子邮件的来源:<app-name>.firebaseapp.com。否则此域对您的应用密钥无效。

【讨论】:

  • 嗨,我刚刚检查了这个。我的任何 API 密钥中都没有 HTTP 引用。唯一的限制是 Google 服务生成的 OAuth 客户端具有 SHA1 指纹。我的服务器和安卓 API 密钥没有任何引用。
  • 无赖。这绝对是我的问题。也许您应该向 Firebase 支持人员咨询,因为他们表示他们正在调查某些事情,但我不确定这是否是同一件事。
  • 您在哪里包含此信息?我想知道通过 google api 控制台但不知道该怎么做。非常感谢您的指导。
  • @virus 点击键名,滚动到底部,找到“HTTP referrers(网站)”
  • 谢谢@TravisChristian - 现在我明白了。我的设置为“无限制”,所以我想我的问题有所不同。尽管如果我尝试更新和设置限制,它会给我一个错误:“找不到指定的 id (f8bba728-33bc-483c-8820-193641aff3b0)。跟踪号:c798503002”我猜这与我的错误有关。发送请求支持,希望他们能提供帮助。如果您有任何想法,欢迎您的意见!
【解决方案2】:

我遇到了同样的问题并解决了。 但是协议应该是https

在 URL 的末尾我必须添加 /*,因为这里会有 token、api_key 和其他由 firebase 添加的参数。

https://ProjectID.firebaseapp.com/* (我从 Firebase 控制台获取我的项目 ID)

【讨论】:

  • 我认为这可能是最明确的答案,因为https://PROJECT-ID.firebaseapp.com/* 正是我必须输入才能使其工作的内容。由于页面上的通配符说明,我之前输入了(*):PROJECT-ID.firebaseapp.com/*,但这仍然导致密码重置电子邮件总是过期。
【解决方案3】:

我发现了我的问题所在...

对我来说,这与凭据设置无关。只是在控制台中的身份验证/登录方法下,我禁用了电子邮件/密码提供程序。一旦我打开它,重置电子邮件链接再次开始正常工作。

【讨论】:

    【解决方案4】:

    我暂时解决了这个问题,只在Google API Console 留下了一个不受限制的 API 密钥

    【讨论】:

      【解决方案5】:

      这就是我解决的方法,与最佳答案略有不同: 首先确实检查电子邮件链接中使用了哪个 API KEY,在我的情况下是 PROD 密钥,即使我是使用 DEV(无限制)启动项目。

      最重要的是:在Website restrictions section of your API KEY 中添加<app-name>.firebaseapp.com. 是不够的:您需要添加包括https 在内的完全限定域:https://<app-name>.firebaseapp.com. 这解决了我的问题。

      【讨论】:

        【解决方案6】:

        我也遇到了同样的问题,对我来说,原因是发送了多封密码重置电子邮件,而我只收到了第一封。

        确保您只发送一次重置密码电子邮件,或者如果您多次发送,请等待多封电子邮件到达并使用最新电子邮件

        【讨论】:

        • 有没有办法让旧邮箱也可以用来验证邮箱地址?
        【解决方案7】:

        我可以通过从电子邮件中删除链接选项来修复它(无需密码访问)enter image description here

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-12-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多