使用聚合物将匿名帐户合并到 firebase 中的电子邮件和密码帐户

Merge anonymous account to email and password account in firebase with polymer

我正在使用 polymer 和 firebase 创建一个网络应用程序,我希望能够合并匿名登录的帐户,以便能够合并到电子邮件和密码帐户。

我找到了关于如何实现这个的官方文档 https://firebase.google.com/docs/auth/web/anonymous-auth , 但是当我尝试时,它不起作用。

文档提供了代码示例

auth.currentUser.link(credential).then(function(user) {
  console.log("Anonymous account successfully upgraded", user);
}, function(error) {
  console.log("Error upgrading anonymous account", error);
});

我现在很困惑,因为这个 "auth" 变量是凭空冒出来的。

我已经尝试替换我的元素属性的用户

<firebase-auth 
  id="auth"
  user="{{user}}"
  on-error="handleError">
</firebase-auth>

,但它给了我以下错误:

Uncaught TypeError: this.user.link is not a function

在此示例中,我应该为 "auth" 使用什么变量?或者,如何使用 polymerfire 将匿名帐户合并到电子邮件和密码帐户?

Polymer 的 firebase-auth 元素有一个 auth 属性。所以你可以绑定到它:

<firebase-auth 
  id="auth"
  user="{{user}}"
  auth="{{auth}}"
  on-error="handleError">
</firebase-auth>

& 然后直接在你的包含元素中使用 this.auth 或者你可以直接在你的代码 w/out 绑定中引用它,比如:

this.$.auth.auth

旁注 - firebase-auth 的文档给出了导致上面的 "auth.auth" 的示例元素 ID "auth",这让人有点困惑。

好的,我明白了。

原来 "link" 方法已被弃用,我们必须使用 "linkWithCredential",所以代码将是

this.$.auth.auth.currentUser.linkWithCredential(credential).then(function(user) {
  console.log("Anonymous account successfully upgraded", user);
}, function(error) {
  console.log("Error upgrading anonymous account", error);
});