Skip to content

获取用户信息

获取当前登录用户的详细信息。

基本用法

javascript
try {
  const user = await sdk.getUserProfile();
  
  console.log('用户 ID:', user.userId);
  console.log('用户名:', user.username);
  console.log('邮箱:', user.email);
  console.log('状态:', user.status);
  console.log('创建时间:', new Date(user.createdTime));
} catch (error) {
  if (error.code === 'UNAUTHORIZED') {
    console.error('Token 已过期,请重新登录');
    // 重定向到登录页
    window.location.href = '/login';
  } else {
    console.error('获取用户信息失败:', error.message);
  }
}

返回值

javascript
{
  userId: string;
  email: string;
  username: string;
  createdTime: number;
  updatedTime: number;
  status: 'ACTIVE' | 'INACTIVE' | 'BANNED';
  createDate?: string;  // 创建日期(格式化字符串)
}

在应用启动时获取用户信息

javascript
async function initializeApp() {
  try {
    if (sdk.isLoggedIn()) {
      const user = await sdk.getUserProfile();
      // 缓存用户信息
      setUser(user);
    }
  } catch (error) {
    if (error.code === 'UNAUTHORIZED') {
      sdk.logout();
      // 重定向到登录页
      window.location.href = '/login';
    }
  }
}

// 应用启动时调用
initializeApp();

React 示例

javascript
import { useEffect, useState } from 'react';

function UserProfile() {
  const [user, setUser] = useState(null);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    async function loadUser() {
      try {
        if (sdk.isLoggedIn()) {
          const userData = await sdk.getUserProfile();
          setUser(userData);
        }
      } catch (error) {
        if (error.code === 'UNAUTHORIZED') {
          sdk.logout();
          window.location.href = '/login';
        }
      } finally {
        setLoading(false);
      }
    }
    
    loadUser();
  }, []);

  if (loading) {
    return <div>加载中...</div>;
  }

  if (!user) {
    return <div>未登录</div>;
  }

  return (
    <div>
      <h1>欢迎, {user.username}</h1>
      <p>邮箱: {user.email}</p>
      <p>状态: {user.status}</p>
    </div>
  );
}

Vue 示例

vue
<template>
  <div>
    <div v-if="loading">加载中...</div>
    <div v-else-if="user">
      <h1>欢迎, {{ user.username }}</h1>
      <p>邮箱: {{ user.email }}</p>
      <p>状态: {{ user.status }}</p>
    </div>
    <div v-else>未登录</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      user: null,
      loading: true
    };
  },
  async mounted() {
    try {
      if (this.$sdk.isLoggedIn()) {
        this.user = await this.$sdk.getUserProfile();
      }
    } catch (error) {
      if (error.code === 'UNAUTHORIZED') {
        this.$sdk.logout();
        this.$router.push('/login');
      }
    } finally {
      this.loading = false;
    }
  }
};
</script>

错误处理

javascript
try {
  const user = await sdk.getUserProfile();
} catch (error) {
  const { code, message } = error;
  
  switch (code) {
    case 'UNAUTHORIZED':
      // Token 已过期,清除并重定向
      sdk.logout();
      window.location.href = '/login';
      break;
      
    case 'USER_NOT_FOUND':
      console.error('用户不存在');
      break;
      
    default:
      console.error(`获取用户信息失败: ${message}`);
  }
}

注意事项

  • 需要先登录(Token 有效)才能获取用户信息
  • 如果 Token 已过期,会抛出 UNAUTHORIZED 错误
  • 建议在应用启动时调用一次,缓存用户信息
  • Token 过期时需要重新登录