Firebase客户端UID和Firebase功能UID与

时间:2018-04-02 17:09:42

标签: ios swift firebase firebase-realtime-database stripe-payments

我正在尝试将Stripe与Firebase一起使用并跟随链接的Firestripe example project。当用户注册该应用时,Firebase会触发以下功能,该功能会在Stripe中创建一个Customer对象。

exports.createStripeCustomer = functions.auth.user().onCreate(event => {
  const data = event.data;
  return stripe.customers.create({
  }).then(customer => {
    return admin.database().ref(`/stripe_customers/${data.uid}/customer_id`).set(customer.id);
  });
});

上述函数中的最后一行应该将Stripe客户ID作为Firebase UID的子项写入数据库中,并成功运行。

现在在客户端(iOS - Swift)尝试通过使用以下内容获取其UID来写入同一个经过身份验证的用户时:

let userID = Auth.auth().currentUser!.uid
Database.database().reference(fromURL: "https://REDACTED.firebaseio.com/").child("stripe_customers").child(uid).child("sources").setValue([
                    "token": token.tokenId,
                    ])

它会在/stripe_customers/下创建一个完全不同的孩子,这意味着UID不匹配...... 如何从客户端获取用户的真实UID?或者我做错了什么?任何帮助或见解将不胜感激。

1 个答案:

答案 0 :(得分:0)

您在第一个代码示例中执行的操作是在条带客户ID下存储数据,而在第二个代码示例中,您尝试根据Firebase UID检索数据。

您要做的是存储名为Firebase UID的用户对象,然后将条带ID存储在子对象中。最后,查询您的Firebase UID对象而不是其Stripe ID子对象。

此外,我看不到您使用let userID = Auth.auth().currentUser!.uid 您查询中的任何位置。如果你声明一个你没有用于你的例子的常量,最好把它留下来。

如果您需要更多帮助,请与我联系。

另外,请查看Firebase的新Cloud Firestore。 它仍处于测试阶段,但与Firebase实时数据库相比,它的功能非常强大。