Skip to content

init-data-golang

该软件包提供用于处理 Telegram 迷你应用程序初始化数据的实用程序。 要了解 有关初始化数据及其用法的更多信息,请参阅 文档.

安装

bash
go get github.com/telegram-mini-apps/init-data-golang

验证

如果过期时间设置为 0,函数将跳过过期时间检查。 不过,建议指定一个非零值,因为这一检查对于防止 使用被盗的旧初始化数据非常重要。

go
package main

import (
	"fmt"
	"github.com/Telegram-Mini-Apps/init-data-golang"
	"time"
)

func main() {
	// Init data in raw format.
	initData := "query_id=AAHdF6IQAAAAAN0XohDhrOrc&..."

	// Telegram Bot secret key.
	token := "627618978:amnnncjocxKJf"

	// Define how long since init data generation date init data is valid.
	expIn := 24 * time.Hour

	// Will return error in case, init data is invalid. To see,
	// which error could be returned, see errors.go file.
	fmt.Println(initdata.Validate(initData, token, expIn))
}

解析

需要注意的是,Parse 函数不会执行与 Validate 函数相同的检查。 因此,该函数只对输入数据进行解析,而不对 哈希值或过期时间进行验证。

go
package main

import (
    "fmt"
    "github.com/Telegram-Mini-Apps/init-data-golang"
)

func main() {
	// Init data in raw format.
	initData := "query_id=AAHdF6IQAAAAAN0XohDhrOrc&..."
	
	// Will return 2 values.
	// 1. Pointer to InitData in case, passed data has correct format.
	// 2. Error in case, something is wrong. 
	fmt.Println(initdata.Parse(initData))
}

签名

签署数据的函数会删除hashauth_date等参数,因为假定 ,hash将由函数返回,auth_date将由函数 本身设置。

go
package main

import (
	"fmt"
	"github.com/Telegram-Mini-Apps/init-data-golang"
	"time"
)

func main() {
	// Init data in raw format.
	initData := "query_id=AAHdF6IQAAAAAN0XohDhrOrc&..."

	// Telegram Bot secret key.
	token := "627618978:amnnncjocxKJf"

	// Signing timestamp.
	authDate := time.Now()

	// The first value is parameters sign result ("hash" init data property).
	// The second one is error which could occur while parsing query string as
	// query parameters.
	fmt.Println(initdata.SignQueryString(initData, token, authDate))
	// or
	fmt.Println(initdata.Sign(map[string]string{
		"query_id": "AAHdF6IQAAAAAN0XohDhrOrc",
		// ...
	}, token, authDate))
}

GoDoc

要查看 GoDoc 文档,请访问 此链接

Released under the MIT License.