Skip to content

grammyjs/validator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

grammY validator


What is this

This package solves two problems at once:

How to use

Deno: import from this URL: https://deno.land/x/grammy_validator/mod.ts

Node.js: npm install @grammyjs/validator

Web Bots: Validation

Web Bots can get access to window.Telegram.WebApp.initData which must be sent to the server for validation. The string value of initData is a query string that you can simply append to a URL to fetch. Example:

const url = "https://grammy.dev?" + window.Telegram.WebApp.initData;
await fetch(url);

This library helps you validate the resulting search query in the backend.

import { validateWebAppData } from "./src/mod.ts";

const token = ""; // <-- put your bot token here
const url = ctx.request.url; // get `URL` object from your web framework

if (validateWebAppData(token, url.searchParams)) { // pass `URLSearchParams` object
    // data is from Telegram
}

Login Widget: Authorization

You can also check the signature if you are using a Telegram Login Widget.

import { checkSignature } from "./src/mod.ts";

const token = ""; // <-- put your bot token here

const payload = {
    id: "424242424242",
    first_name: "John",
    last_name: "Doe",
    username: "username",
    photo_url: "https://t.me/i/userpic/320/username.jpg",
    auth_date: "1519400000",
    hash: "87e5a7e644d0ee362334d92bc8ecc981ca11ffc11eca809505",
};

if (checkSignature(token, payload)) {
    // data is from Telegram
}

About

Validation logic for Web Apps and login widgets.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •