使用自己指定的uid创建用户

时间:2019-10-09 13:19:57

标签: firebase flutter dart firebase-authentication

我正在使用带有Firebase的flutter管理我的用户,在此链接中,它说您可以在用户创建期间指定uid:https://firebase.google.com/docs/auth/admin/manage-users#create_a_user

我的问题:dart / flutter等效于什么?我知道firebase会自动为您生成一个,但是在我的用例中,我需要能够指定我的。

对于扑朔迷离,我只知道 createUserWithEmailAndPassword 方法,但没有' uid '参数。

FirebaseAuth.instance.createUserWithEmailAndPassword(email: null, password: null)

但是,在上面的链接中,他们提供了使用此类方法的示例( node.js )。

admin.auth().createUser({
  uid: 'some-uid',
  email: 'user@example.com',
  phoneNumber: '+11234567890'
})
  .then(function(userRecord) {
    // See the UserRecord reference doc for the contents of userRecord.
    console.log('Successfully created new user:', userRecord.uid);
  })
  .catch(function(error) {
    console.log('Error creating new user:', error);
  });

3 个答案:

答案 0 :(得分:0)

在任何平台(Android,iOS,Web,Flutter等)上的任何Firebase客户端SDK均没有此类选项。

Firebase Admin是服务器SDK,并且相信调用其方法的代码具有特权,并且可以在安全和受信任的环境中运行。认为这对于发明UID是安全的。客户端SDK在用户设备上运行,这被认为是不可信的,可能会受到威胁。在这种情况下,Firebase Auth产品必须为用户提供适当的UID。

答案 1 :(得分:0)

您可以通过实施自定义提供程序来完全控制Firebase身份验证用户的创建。但是,您可能会想到,这是一项敏感的操作,因此代码要求您具有对Firebase项目的完全管理访问权限。因此,您不能在Flutter应用中运行这种类型的操作,而必须在受信任的环境中运行它,例如开发机器,您控制的服务器或Cloud Functions。

通常这意味着:

  1. 您将在Flutter应用中收集用户的凭据
  2. (安全地)将它们发送到服务器上的自定义终结点
  3. 并验证用户凭据是否正确
  4. 并使用Admin SDK to create a token for the user
  5. 然后安全地将其发送回Flutter应用

答案 2 :(得分:0)

该选项仅对 Admin SDK 存在,即,由于Admin SDK在“ a secure server environment”中运行,因此您根本无法指定uid客户端。

您需要使用海关uid的服务器端创建用户,然后通过提供例如来再次登录这些帐户的客户端。自定义令牌,电话等。