Firebase CreateUser中的自定义Uid

时间:2017-07-11 13:22:03

标签: firebase firebase-realtime-database

我的应用结构要求我使用特定的Uid登录用户。

我可以在Firebase Auth。

中执行此操作

我的意思是,如果我想创建一个uid=1的用户。 我将发送电子邮件和密码。

有可能吗?

3 个答案:

答案 0 :(得分:0)

您不需要使用特定的Uid登录用户,Firebase Authentication会为您执行此操作。

好处是您不需要创建自己的authentication mechanism而且您不需要维护它,因为Firebase已经提供了这一点。请阅读上面链接中提到的官方文档。

希望它有所帮助。

答案 1 :(得分:0)

如果您使用自定义令牌进行身份验证,则可以为Firebase用户设置UID。 看到这个https://firebase.google.com/docs/auth/admin/create-custom-tokens#create_custom_tokens_using_a_third-party_jwt_library

以下是使用Ruby(:uid => uid)的示例

require "jwt"

# Get your service account's email address and private key from the JSON key file
$service_account_email = "service-account@my-project-abc123.iam.gserviceaccount.com"
$private_key = OpenSSL::PKey::RSA.new "-----BEGIN PRIVATE KEY-----\n..."

def create_custom_token(uid, is_premium_account)
  now_seconds = Time.now.to_i
  payload = {:iss => $service_account_email,
             :sub => $service_account_email,
             :aud => "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit",
             :iat => now_seconds,
             :exp => now_seconds+(60*60), # Maximum expiration time is one hour
             :uid => uid,
             :claims => {:premium_account => is_premium_account}}
  JWT.encode payload, $private_key, "RS256"
end

答案 2 :(得分:0)

有一种使用管理 SDK 创建自定义 uid 的方法,但我不确定用户名/密码部分:https://firebase.google.com/docs/auth/admin/create-custom-tokens#create_custom_tokens_using_the_firebase_admin_sdk

const uid = 'some-uid';

admin
  .auth()
  .createCustomToken(uid)
  .then((customToken) => {
    // Send token back to client
  })
  .catch((error) => {
    console.log('Error creating custom token:', error);
  });