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

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

回答

收藏

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

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

初始数据

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

6 S" g' n" Z4 a' d; Q
* ?& |. D& M' X. F0 H5 z: L* C
解析

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

  1. import { parseInitData } from '@telegram-apps/sdk';2 i, O  y' t/ m; D1 G2 [, e0 b! b
  2. 5 N4 r" n& a3 l7 Q+ E( ]  b
  3. // Let's imagine, we have init data in a raw format like this. Telegram application is
    " J. O* u9 ~7 L8 c6 z- v
  4. // sending it in the exact same format.
    ) S- C# J$ I" G& Z8 m4 W9 s4 V0 r& w
  5. const initDataString =
    0 W5 a. R' C+ d% q* Q: Z
  6.   'query_id=AAHdF6IQAAAAAN0XohDhrOrc' +7 g, G7 W5 O" t1 _5 H" ~
  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' +( [8 j3 x8 C3 F2 i
  8.   '&auth_date=1662771648' +' z' f( \# F+ u) _4 x
  9.   '&hash=c501b71e775f74ce10e377dea85a7ea24ecd640b223ea86dfe453e0eaed2e2b2';: A* S! g' f$ u5 K

  10. 6 J) M: a# P/ ~7 u/ l( r
  11. // Extract init data.* ]4 T* _) T1 [
  12. console.log(parseInitData(initDataString));
    8 g+ y3 ^3 {' ~$ J5 W6 E9 \
  13. // or8 R; I/ ^3 m8 S* J- J; t: k% r" i
  14. console.log(parseInitData(new URLSearchParams(initDataString)));
    ; q" |% E1 c% }. O- C& n

  15. % k/ \0 U6 P% e3 X, x/ \) T) }/ ]
  16. // Output:
    6 {+ K# [& Y7 }6 a2 U4 Y: k9 d
  17. // {
    * K& X! `$ t0 \. h+ X4 h5 ^
  18. //   authDate: 2022-09-10T01:00:48.000Z,
    3 t" u$ B: l9 ]
  19. //   hash: 'c501b71e775f74ce10e377dea85a7ea24ecd640b223ea86dfe453e0eaed2e2b2',5 n# w: ~) Q# ]4 j
  20. //   queryId: 'AAHdF6IQAAAAAN0XohDhrOrc',
    9 T8 Y! l' e% t3 X" i- \0 k1 j
  21. //   user: {
    8 B" O. k* `- N% x$ U
  22. //     id: 279058397,* v, j) d& c/ x: F5 J( d
  23. //     firstName: 'Vladislav',
    ! r; x$ q/ X) o9 C0 t
  24. //     lastName: 'Kibenko',% Q# A% D3 X4 K( j  H- W
  25. //     username: 'vdkfrost',
    & N/ E, X1 m4 w+ D5 @
  26. //     languageCode: 'ru',
    $ d& F- e5 M) h3 s, M
  27. //     isPremium: true( \: l7 v' S" [6 D/ \! b. ?
  28. //   }; l' w' p/ c9 a, C7 l
  29. // }
复制代码
该函数提取所需的参数,并自动验证其类型。 如果 中的属性类型或值无效,则会出错。 要了解返回类型的更多信息,请参阅 的 InitData 类型页面。
, M- H4 l* G# Y, _+ J0 Y; h6 f" w  R  V& ~3 P$ s
验证和签名

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

4 l6 o3 x" _/ P7 O8 k
6 b$ d8 j/ {0 X& Y+ B
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则