title: 用户管理

本篇文档介绍如何使用 Wilddog Auth 管理用户。它包括:创建用户、获取用户信息、获取用户属性、更新用户信息、删除用户等。

创建用户

创建用户包含以下四种方法:

  • 通过 手机登录 创建
  • 通过 邮箱登录 创建
  • 通过第三方身份认证提供商授权创建
  • 在 控制面板—身份认证—用户 中手动创建

获取用户信息

用户信息包含 用户属性 及用户的登录信息。

获取当前登录用户

获取当前登录用户是管理用户的基础。

获取当前登录用户包含以下两种方法:

  • Auth 实例上设置监听器
  • 使用 currentUser 方法

使用监听器:

  1. wilddog.auth().onAuthStateChanged(function(user) {
  2. if (user) {
  3. console.log("user");
  4. } else {
  5. console.log("no user");
  6. }
  7. });

使用 currentUser 方法:

  1. var user = wilddog.auth().currentUser;
  2. if (user != null) {
  3. // 用户已登录
  4. } else {
  5. // 没有用户登录
  6. }

注意:

推荐使用监听器,这样可以保证在你获取当前用户时 Auth 实例不会处于中间状态,如用户正在登录时。

获取用户属性

User 实例可以用于获取用户属性。

  1. var user = wilddog.auth().currentUser;
  2. if (user != null) {
  3. var name = user.displayName;
  4. var email = user.email;
  5. var phone = user.phone
  6. var photoUrl = user.photoURL;
  7. var uid = user.uid;
  8. } else {
  9. // 没有用户登录
  10. }

获取 Provider 的用户属性

providerData 用于获取所有 Provider 的用户属性。

  1. var user = wilddog.auth().currentUser;
  2. console.log(user);
  3. user.providerData.forEach(function (profile) {
  4. console.log("Sign-in provider: " + profile.providerId);
  5. console.log(" Provider-specific UID: " + profile.uid);
  6. console.log(" Name: " + profile.displayName);
  7. console.log(" Email: " + profile.email);
  8. console.log(" Phone: " + profile.phone);
  9. console.log(" Photo URL: " + profile.photoURL);
  10. });

更新用户信息

User 实例用于更新 用户属性 及用户的登录信息。

更新用户属性

updateProfile() 方法用于更新用户属性。

例如,更新用户的displayNamephotoURL 属性:

  1. wilddog.auth().currentUser.updateProfile({
  2. displayName: "name",
  3. photoURL: "https://example.com/path/photo.jpg"
  4. }).then(function() {
  5. // 更新成功
  6. }).catch(function(error) {
  7. // 发生错误
  8. });

注意:

使用 customToken 登录时,若该登录用户为 admin 用户,则不能更新用户属性。

更新手机号

updatePhone() 方法用于更新用户手机号。

  1. wilddog.auth().currentUser.updatePhone("18888888888").then(function() {
  2. // 更新成功
  3. }).catch(function(error) {
  4. // 发生错误
  5. console.log(error);
  6. });

注意:

  • 要更新用户的手机号,该用户必须最近登录过。请参考 重新进行身份认证
  • 使用 customToken 登录时,若该登录用户为 admin 用户,则不能更新手机号。

更新邮箱地址

updateEmail() 方法用于更新用户邮箱地址。

  1. wilddog.auth().currentUser.updateEmail("12345678@wilddog.com").then(function() {
  2. // 更新成功
  3. }).catch(function(error) {
  4. // 发生错误
  5. console.log(error);
  6. });

注意:

  • 要更新用户的邮箱地址,该用户必须最近登录过。请参考 重新进行身份认证
  • 使用 customToken 登录时,若该登录用户为 admin 用户,则不能更新邮箱地址。

更新用户密码

updatePassword() 方法用于更新用户密码。

  1. wilddog.auth().currentUser.updatePassword("password123").then(function() {
  2. // 更新成功
  3. }).catch(function(error) {
  4. console.log(error);
  5. // 发生错误
  6. });

注意:

  • 要更新密码,该用户必须最近登录过。请参考 重新进行身份认证
  • 使用 customToken 登录时,若该登录用户为 admin 用户,则不能更新用户密码。

发送重设密码短信

sendPasswordResetSms() 方法用于向用户发送重设密码短信。

  1. wilddog.auth().sendPasswordResetSms("13888888888").then(function() {
  2. // 发送成功
  3. }).catch(function(error) {
  4. // 发生错误
  5. console.log(error);
  6. });

注意:

在控制面板 身份认证—登录方式—邮箱登录 中可以设置邮件自定义模板。

发送重设密码邮件

sendPasswordResetEmail() 方法用于向用户发送重设密码邮件。

  1. wilddog.auth().sendPasswordResetEmail("12345678@wilddog.com").then(function() {
  2. // 发送成功
  3. }).catch(function(error) {
  4. // 发生错误
  5. console.log(error);
  6. });

注意:

在控制面板 身份认证—登录方式—邮箱登录 中可以设置邮件自定义模板。

删除用户

删除用户的方式有以下两种:

  • 通过 delete() 方法删除
  • 在控制面板身份认证—用户 中手动删除

使用 delete() 方法:

  1. wilddog.auth().currentUser.delete().then(function() {
  2. // 删除成功
  3. }).catch(function(error) {
  4. // 发生错误
  5. console.log(error);
  6. });

使用控制面板:

title: 用户管理 - 图1

注意:

  • 要删除用户,该用户必须最近登录过。请参考 重新进行身份认证
  • 使用 customToken 登录时,若该登录用户为 admin 用户,则不能更新用户密码。

重新进行身份认证

用户长时间未登录的情况下进行下列安全敏感操作会失败:

  • 删除帐户
  • 设置主邮箱地址
  • 更改密码

此时需要重新对用户进行身份认证。

reauthenticate(credential) 方法用于对用户重新进行身份认证。

  1. var credential ; // 需要初始化
  2. wilddog.auth().currentUser.reauthenticate(credential).then(function(res) {
  3. // 重新认证成功
  4. console.log(res);
  5. }).catch(function(error) {
  6. // 发生错误
  7. console.log(error);
  8. });