fix
This commit is contained in:
43
telegram.go
43
telegram.go
@@ -1,41 +1,16 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"crypto/hmac"
|
||||
"crypto/sha256"
|
||||
"encoding/hex"
|
||||
"net/url"
|
||||
"sort"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
initdata "github.com/telegram-mini-apps/init-data-golang"
|
||||
)
|
||||
|
||||
func VerifyTelegramInitData(initData, botToken string) (map[string]string, bool) {
|
||||
values, _ := url.ParseQuery(initData)
|
||||
|
||||
hash := values.Get("hash")
|
||||
values.Del("hash")
|
||||
|
||||
var data []string
|
||||
for k, v := range values {
|
||||
data = append(data, k+"="+v[0])
|
||||
func VerifyTelegramInitData(initData, botToken string) (initdata.InitData, error) {
|
||||
expIn := 24 * time.Hour
|
||||
err := initdata.Validate(initData, botToken, expIn)
|
||||
if err != nil {
|
||||
return initdata.InitData{}, err
|
||||
}
|
||||
sort.Strings(data)
|
||||
|
||||
checkString := strings.Join(data, "\n")
|
||||
|
||||
secret := sha256.Sum256([]byte(botToken))
|
||||
h := hmac.New(sha256.New, secret[:])
|
||||
h.Write([]byte(checkString))
|
||||
|
||||
expected := hex.EncodeToString(h.Sum(nil))
|
||||
|
||||
return valuesToMap(values), expected == hash
|
||||
}
|
||||
|
||||
func valuesToMap(v url.Values) map[string]string {
|
||||
m := make(map[string]string)
|
||||
for k, val := range v {
|
||||
m[k] = val[0]
|
||||
}
|
||||
return m
|
||||
return initdata.Parse(initData)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user