English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE คนไทย Français русский

回答

收藏

Telegram 小程序 | TypeScript @telegram-apps/sdk @1.x | 初始数据

开源社区 开源社区 10164 人阅读 | 0 人回复 | 2025-02-23

初始数据

SDK 的这一部分提供了使用 Mini Apps init data 的实用程序。


+ M2 S: _0 A4 ]% }% d* L. d4 ?: N$ [) x  B% n5 Z7 G  o4 ?3 B
解析

该库包含函数 parseInitData,可从查询参数中提取初始化数据 信息。 下面是一个使用示例:

  1. import { parseInitData } from '@telegram-apps/sdk';, T& r" O- D7 v: B
  2. # g# z. N8 W! n. C/ [7 r' Y
  3. // Let's imagine, we have init data in a raw format like this. Telegram application is
    3 c8 s6 @& t) c) d% c- |
  4. // sending it in the exact same format.8 D: \: F5 c# W1 t$ K
  5. const initDataString =0 H$ ]7 e) x$ y1 i) q' n9 ?  ?
  6.   'query_id=AAHdF6IQAAAAAN0XohDhrOrc' +& f. x" J, }$ r' }- M0 f6 M
  7.   '&user=%7B%22id%22%3A279058397%2C%22first_name%22%3A%22Vladislav%22%2C%22last_name%22%3A%22Kibenko%22%2C%22username%22%3A%22vdkfrost%22%2C%22language_code%22%3A%22ru%22%2C%22is_premium%22%3Atrue%7D' +
    . }: a9 \6 c& i2 \" r0 j4 j, A
  8.   '&auth_date=1662771648' +
    * j: p% B7 t0 r7 Z, m. @8 ^  }( @
  9.   '&hash=c501b71e775f74ce10e377dea85a7ea24ecd640b223ea86dfe453e0eaed2e2b2';
    . X8 g3 K3 V+ z
  10. * c/ U/ G. |# v" E/ L
  11. // Extract init data., L5 @/ H$ w- u. \0 l
  12. console.log(parseInitData(initDataString));1 k% [. O+ P+ v; Z
  13. // or9 w( o  ?9 w4 n" B+ f& N5 D
  14. console.log(parseInitData(new URLSearchParams(initDataString)));
    : I4 ~* V0 r  ~" V& Y- C' h( Z' f

  15. ; D% q1 N! r( L) _( f( a0 T
  16. // Output:
    7 Z% u( ]* a" N, m7 U; m
  17. // {9 [( ]$ }% u! B, c( d9 M
  18. //   authDate: 2022-09-10T01:00:48.000Z,- k0 ?: a, c) ~  }+ |# l# C
  19. //   hash: 'c501b71e775f74ce10e377dea85a7ea24ecd640b223ea86dfe453e0eaed2e2b2',: k: Y  ]' }# A; n& S: A
  20. //   queryId: 'AAHdF6IQAAAAAN0XohDhrOrc',
    ( i. \  A! n" r
  21. //   user: {
    $ h3 @  y. B: x) q5 L5 ~
  22. //     id: 279058397,
      @8 e7 M/ _/ T( @
  23. //     firstName: 'Vladislav',2 o# g  B" D. ]) T  S; R7 }4 T6 G
  24. //     lastName: 'Kibenko',
    : i# R2 v  L2 G" o9 R: N, i
  25. //     username: 'vdkfrost',
    . N1 p* m% y7 I" _5 A7 Y
  26. //     languageCode: 'ru',0 p+ M" Y" W) A
  27. //     isPremium: true
    9 I# t' p" h, G$ x2 l( x
  28. //   }; Z6 }) z+ w, }
  29. // }
复制代码
该函数提取所需的参数,并自动验证其类型。 如果 中的属性类型或值无效,则会出错。 要了解返回类型的更多信息,请参阅 的 InitData 类型页面。9 |4 \; r3 @1 K2 P* [
, X  V5 a' Y( r9 U" j
验证和签名

验证和签名实用程序已移至独立的 软件包 - @telegram-apps/init-data-node 中。


8 ~: Q! r: w; t5 D4 B+ ~
$ }) v+ O2 d# F: ~! @
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则