tgauth
😊 这是我的第一个模块,所以肯定有一些可以改进的地方。
一个简单的解决方案,将 Telegram 登录按钮添加到您的 Nuxt 应用中
功能
- 🚀 提供一个简单的登录按钮组件
- 💾 持久化用户数据并提供一个简单的可组合函数来访问它
快速设置
- 安装模块
npx nuxi module add @paranoidphantom/tgauth
- 添加
TelegramAuth
组件
<template>
<TelegramAuth bot="<bot username>" />
</templaet>
- 使用
useTelegramUser
可组合函数获取用户信息
<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>
在服务器端验证用户
- 将您的 Bot Token 添加到 .env 文件中(从 @BotFather 获取)
TG_BOT_TOKEN="<token>"
- (可选)为身份验证对象设置自定义过期时间(默认是 2 周,0 表示永不过期)
export default defineNuxtConfig({
// ...
tgauth: {
auth_expiration: 42777, // Expiration time in seconds
},
// ...
});
- 使用中间件验证用户是否已登录并发送了从 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