添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

telegram-webapp-auth

This Python package implements Telegram Web authentication algorithm .

Documentation

Small package - small documentation :)

Examples

Using with FastAPI

Let's create some useful stuff according OAuth2 tutorial .

File utils.py :

from telegram_webapp_auth import parse_user_data, parse_init_data, validate
from fastapi import HTTPException, Depends
from fastapi.security.http import HTTPBase, HTTPAuthorizationCredentials
from pydantic import BaseModel
from .config import TelegramBotSettings  # Telegram Bot configuration
telegram_authentication_schema = HTTPBase()
class TelegramUser(BaseModel):
    id: int
    first_name: str
    last_name: str
    username: str
    language_code: str
def verify_token(auth_cred: HTTPAuthorizationCredentials) -> TelegramUser:
    settings = TelegramBotSettings()
    init_data = auth_cred.credentials
    try:
        if validate(init_data, settings.secret_key):  # generated using generate_secret_key function
            raise ValueError("Invalid hash")
    except ValueError:
        raise HTTPException(status_code=403, detail="Could not validate credentials")
    init_data = parse_init_data(init_data)
    user_data = parse_user_data(init_data["user"])
    return TelegramUser.parse_obj(user_data)
def get_current_user(
    auth_cred: HTTPAuthorizationCredentials = Depends(telegram_authentication_schema)
) -> TelegramUser:
    return verify_token(auth_cred)

Finally, we can use it as usual.

File app.py:

from pydantic import BaseModel
from fastapi import FastAPI, Depends
from utils import get_current_user, TelegramUser
app = FastAPI()
class Message(BaseModel):
    text: str
@app.post("/message")
async def send_message(
    message: Message,
    user: TelegramUser = Depends(get_current_user),
    Some backend logic...
            

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution Hashes for telegram_webapp_auth-1.0.1-py3-none-any.whl Hashes for telegram_webapp_auth-1.0.1-py3-none-any.whl Algorithm Hash digest "PyPI", "Python Package Index", and the blocks logos are registered trademarks of the Python Software Foundation.
© 2024 Python Software Foundation
Site map