【问题标题】:generateEmailVerificationLink and other Firebase Passing State in Email Actions电子邮件操作中的 generateEmailVerificationLink 和其他 Firebase 传递状态
【发布时间】:2019-12-01 08:41:15
【问题描述】:

因此,我正在与移动开发团队密切合作,以便在用户注册、重置密码等时生成正确的电子邮件。

使用我粘贴在下面的这段代码,在完成所有白名单和动态链接配置​​之后,我们终于生成了链接。它适用于iOS和Android这两个应用程序。问题出在webapp上。如果用户尝试通过应用程序注册并收到此电子邮件但在桌面上打开它,则 web 应用程序将显示 404 并且不会转到我在 url: baseUrl 中设置的 url(这是用户可以使用的 url激活他的电子邮件)。

这里有什么不明白的地方?

exports = module.exports = region('europe-west1').https.onRequest(async (
  request,
  response,
): Promise<any> => {
  const CONFIG = config();
  const { mobile } = CONFIG;
  const baseUrl = CONFIG.bloqify.base_url;

  const actionCodeSettings: authLib.ActionCodeSettings = {
    url: baseUrl,
    iOS: {
      bundleId: mobile.ios.bundle_id,
    },
    android: {
      packageName: mobile.android.package_name,
      installApp: true,
      minimumVersion: mobile.android.moinimum_version,
    },
    handleCodeInApp: true,
    dynamicLinkDomain: mobile.dynamic_link.domain,
  };

  const [generateLinkError, generateLinkSuccess] = await to(
    auth.generateEmailVerificationLink('testemail@test.com', actionCodeSettings),
  );
  if (generateLinkError) {
    console.log(generateLinkError.message);
    return response.status(500).send({
      success: false,
      refunded: !!generateLinkError,
      message: generateLinkError.message,
    });
  }

  console.log(generateLinkSuccess);

  return response.status(200).send({ success: true });
});

【问题讨论】:

  • 是指向 Firebase 托管中 Web 应用程序的基本网址吗?
  • 是的。这是一个部署在 FB 托管中的 Vuejs 应用程序。 404 是自定义的 404 页面。

标签: javascript firebase firebase-authentication google-cloud-functions google-auth-library-nodejs


【解决方案1】:

在桌面浏览器中打开时,它应该回退到baseUrl。该页面应该在您的端实现。您应该按照"completing sign-in in a web page" 中说明的步骤进行操作。否则,这将显示 404 错误,因为该页面不可用。

【讨论】:

  • 问题在于它不是回退到baseUrl,而是回退到baseUrl的根。 F.e:baseUrl = 'http://myapp.com/#/auth-handler?param1=true,但随后链接重定向到http://myapp.com/someparams&amp;continueUrl=http://myapp.com/#/auth-handler?param1=true。我应该检测到continueUrl 并自己重定向到它吗?
  • 您是否将 Firebase 控制台中的操作回调 URL 更新为 http://myapp.com/...
  • 具体在哪里?你是说 Auth-Templates 吗?
  • Firebase 控制台中有一个电子邮件模板部分(在身份验证中)。电子邮件操作回调 URL 已在此处设置。
【解决方案2】:

您需要在 Firebase 项目控制台中设置验证链接的 url。

转到身份验证->模板->单击模板部分中的编辑按钮

然后单击底部的自定义 url 链接,然后在字段中添加您网站的域并添加该地址唯一的 url 路径。例如

https://yourdomain/action

然后使用您的 web sdk 处理操作代码以标记电子邮件已验证/更新密码。

P.S您在操作设置中传递的 url 用于重定向目的。处理这些链接的更好方法是创建单独的域托管,仅用于处理这些链接。在您的 Firebase 设置中提供该域地址,然后在这种情况下执行验证重定向到您的 Vue 网站。这是一个实现此场景的 React 应用程序:https://github.com/griffinsockwell/react-firebase-custom-email-handlers

第一步

第 2 步

【讨论】:

  • 我们已经在前端配置了自定义电子邮件处理程序。我想你把话题搞糊涂了。
  • 那你能验证用户邮箱吗?并且无法重定向?
  • 我们在这里使用generateEmailVerificationLink(动态链接)来生成适用于移动应用程序的正确链接,例如,我们没有使用谷歌发送的标准电子邮件createUserWithEmailAndPassword。跨度>
  • 是的,我了解您正在使用后端生成验证链接,然后您通过自己的电子邮件服务(如发送网格)发送该链接。
  • handleCodeInApp 为 true 和 false 时 url 有什么区别。
猜你喜欢
  • 1970-01-01
  • 2023-02-04
  • 1970-01-01
  • 2018-02-23
  • 2017-06-19
  • 2018-02-10
  • 2018-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多