# 管理用户

# 创建用户

开发者可以调用以下登录方式,登录或者创建一个用户:

# 获取当前登录的用户

# 订阅登录状态变化的回调函数

获取当前用户,推荐在 Auth 对象上设置一个回调函数,每当用户登录状态转变时,会触发这个回调函数,并且获得当前的 LoginState

import tcb from "tcb-js-sdk";

const app = tcb.init({
  env: "your-env-id"
});
const auth = app.auth();

// 设置一个观察者
auth.onLoginStateChanged((loginState) => {
    if (loginState) {
        // 此时用户已经登录
    } else {
        // 没有登录
    }
});

# 直接获取当前用户

您还可以使用 Auth.currentUser 属性来获取当前登录的用户。如果用户未登录,则 currentUsernull

const user = auth.currentUser;

if (user) {
    // 此时用户已经登录
} else {
    // 没有登录
}

# 获取用户个人资料

您可以通过 User 对象的各个属性来获取用户的个人资料信息:

const user = auth.currentUser;
let uid, nickName, gender, avatarUrl, location;

if (user) {
    // 云开发唯一用户 id
    uid = user.uid

    // 昵称
    nickName = user.nickName

    // 性别
    gender = user.gender

    // 头像URL
    avatarUrl = user.avatarUrl

    // 用户地理位置
    location = user.location
}

# 更新用户个人资料

您可以使用 User.update 方法来更新用户的个人资料信息。例如:

const user = auth.currentUser;

user.update({
    nickName: 'Tony Stark',
    gender: 'MALE',
    avatarUrl: 'https://...',
}).then(() => {
    // 更新用户资料成功
});

# 刷新用户资料信息

对于一个多端应用,用户可能在其中某个端上更新过自己的个人资料信息,此时其它端上可能需要刷新信息:

const user = auth.currentUser;

// 刷新用户信息
user.refresh().then(() => {
    // 刷新后,获取到的用户信息即为最新的信息
    const { nickName, gender, avatarUrl } = user
});