初始数据 SDK 的这一部分提供了使用 Mini Apps init data 的实用程序。 6 S" g' n" Z4 a' d; Q
* ?& |. D& M' X. F0 H5 z: L* C
解析该库包含函数 parseInitData,可从查询参数中提取初始化数据 信息。 下面是一个使用示例: - import { parseInitData } from '@telegram-apps/sdk';2 i, O y' t/ m; D1 G2 [, e0 b! b
- 5 N4 r" n& a3 l7 Q+ E( ] b
- // Let's imagine, we have init data in a raw format like this. Telegram application is
" J. O* u9 ~7 L8 c6 z- v - // sending it in the exact same format.
) S- C# J$ I" G& Z8 m4 W9 s4 V0 r& w - const initDataString =
0 W5 a. R' C+ d% q* Q: Z - 'query_id=AAHdF6IQAAAAAN0XohDhrOrc' +7 g, G7 W5 O" t1 _5 H" ~
- '&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
- '&auth_date=1662771648' +' z' f( \# F+ u) _4 x
- '&hash=c501b71e775f74ce10e377dea85a7ea24ecd640b223ea86dfe453e0eaed2e2b2';: A* S! g' f$ u5 K
6 J) M: a# P/ ~7 u/ l( r- // Extract init data.* ]4 T* _) T1 [
- console.log(parseInitData(initDataString));
8 g+ y3 ^3 {' ~$ J5 W6 E9 \ - // or8 R; I/ ^3 m8 S* J- J; t: k% r" i
- console.log(parseInitData(new URLSearchParams(initDataString)));
; q" |% E1 c% }. O- C& n
% k/ \0 U6 P% e3 X, x/ \) T) }/ ]- // Output:
6 {+ K# [& Y7 }6 a2 U4 Y: k9 d - // {
* K& X! `$ t0 \. h+ X4 h5 ^ - // authDate: 2022-09-10T01:00:48.000Z,
3 t" u$ B: l9 ] - // hash: 'c501b71e775f74ce10e377dea85a7ea24ecd640b223ea86dfe453e0eaed2e2b2',5 n# w: ~) Q# ]4 j
- // queryId: 'AAHdF6IQAAAAAN0XohDhrOrc',
9 T8 Y! l' e% t3 X" i- \0 k1 j - // user: {
8 B" O. k* `- N% x$ U - // id: 279058397,* v, j) d& c/ x: F5 J( d
- // firstName: 'Vladislav',
! r; x$ q/ X) o9 C0 t - // lastName: 'Kibenko',% Q# A% D3 X4 K( j H- W
- // username: 'vdkfrost',
& N/ E, X1 m4 w+ D5 @ - // languageCode: 'ru',
$ d& F- e5 M) h3 s, M - // isPremium: true( \: l7 v' S" [6 D/ \! b. ?
- // }; l' w' p/ c9 a, C7 l
- // }
复制代码 该函数提取所需的参数,并自动验证其类型。 如果 中的属性类型或值无效,则会出错。 要了解返回类型的更多信息,请参阅 的 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
|