Douyin Account Information Retrieval Development Record

AccountInfo Implementation#

We first defined the AccountInfo type for storing account information.

export interface AccountInfo {
  provider: string;
  accountId: string;
  username: string;
  description?: string;
  profileUrl?: string;
  avatarUrl?: string;
  extraData: unknown;
}

And attached it to the Platform type.

Then use the methods in the src/sync/account.ts file to get account information.

Douyin Account Information Retrieval#

To display the currently logged-in account information to users on the frontend, we need to get Douyin account information.

The specific implementation is in the src/sync/account/douyin.ts file.

export async function getDouyinAccountInfo(): Promise<AccountInfo> {
  // Access TikTok API to get user information
  const response = await fetch('https://creator.douyin.com/web/api/media/user/info/', {
    method: 'GET',
    headers: {
      Accept: 'application/json',
      'Content-Type': 'application/json',
    },
    credentials: 'include', // Include cookies to ensure authentication
  });

  if (!response.ok) {
    throw new Error(`HTTP error, status code: ${response.status}`);
  }

  const responseData = await response.json();

  if (!responseData.user) {
    return null;
  }

  const result: AccountInfo = {
    provider: 'douyin',
    accountId: responseData.user.sec_uid,
    username: responseData.user.nickname,
    description: responseData.user.signature,
    profileUrl: `https://www.douyin.com/user/${responseData.user.sec_uid}`,
    avatarUrl: responseData.user.avatar_larger.url_list[0],
    extraData: responseData,
  };

  return result;
}

Through F12 in the Douyin backend, we found this interface for getting user information. After using fetch to get user information, we can display the currently logged-in account information to users on the frontend.

Then we mount this function to the getAccountInfo method in the src/sync/account.ts file.

The provider corresponds to the accountKey in PlatformInfo. Platform information will look up the corresponding account information in storage when returning.

Mission Accomplished#

Through the above steps, we can get Douyin account information and display it to users.