透過超過 100 個技巧的集合來學習 Nuxt!

tgauth
@paranoidphantom/tgauth

極其簡單的「使用 Telegram 登入」按鈕

tgauth

npm versionnpm downloadsLicenseNuxt

😊 這是我的第一個模組,所以我確信有些地方可以改進。

一個將 Telegram 登入按鈕添加到您的 Nuxt 應用程式的簡單解決方案

功能

  • 🚀 提供一個簡單的登入按鈕元件
  • 💾 持久保存使用者資料並提供一個簡單的 composable 來存取它

快速設定

  1. 安裝模組
npx nuxi module add @paranoidphantom/tgauth
  1. 新增 TelegramAuth 元件
<template>
    <TelegramAuth bot="<bot username>" />
</templaet>
  1. 使用 useTelegramUser composable 來取得使用者資訊
<script lang="ts" setup>
const { user } = useTelegramUser();

console.log(user.value); // => { first_name: "John", last_name: "Doe", username: "johndoe", ...}
</script>

登出

<script lang="ts" setup>
const { logout } = useTelegramUser();

logout(); // => clears stored telegram user data
</script>

在伺服器上驗證使用者

  1. 將您的機器人 Token 添加到 .env (從 @BotFather 取得)
TG_BOT_TOKEN="<token>"
  1. (可選)為驗證物件設定自訂的到期時間(預設為 2 週,0 表示永不過期)
export default defineNuxtConfig({
    // ...
    tgauth: {
        auth_expiration: 42777, // Expiration time in seconds
    },
    // ...
});
  1. 使用中間件來驗證使用者是否已登入並發送從 Telegram 收到的合法驗證物件
import { serverTelegramUser } from "#tgauth/server";

export default defineEventHandler(async (event) => {
    const { valid, user } = await serverTelegramUser(event);
    // valid === true if data came from the telegram
    // user is defined if valid === true and contains user data
});

監聽事件

<template>
    <TelegramAuth @login="(data) => console.log(data)" @logout="() => console.log('Logged out!')" bot="<bot username>" />
</templaet>

使用重定向模式

如果使用者被重定向到您的 Nuxt 應用程式,useTelegramUser 將會自動填入返回的資料。

<template>
    <TelegramAuth bot="<bot username>" auth-url="https://your-app.com/callback" />
</templaet>

貢獻

本地開發
# Install dependencies
bun install

# Generate type stubs
bun run dev:prepare

# Develop with the playground
bun run dev

# Build the playground
bun run dev:build

# Run ESLint
bun run lint

# Run Vitest
bun run test
bun run test:watch

# Release new version
bun run release