You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React Native应用中实现Telegram登录功能?

Telegram 认证在 React Native (Expo) 中的可行方案

首先明确:Telegram 并未提供标准 OAuth2 流程所需的公开端点(你需要的 authorizationEndpoint、tokenEndpoint 这类官方标准参数不存在),所以得换思路推进,以下是几种落地可行的方案:

方案一:WebView 嵌入 Telegram 官方登录小部件

把网页端用的 Telegram 登录小部件嵌入 React Native 的 WebView 中,适配移动端流程:

  • 在 Expo 项目中引入 react-native-webview 组件
  • 构造包含你 Bot 信息的登录小部件 HTML 代码,指定自定义跳转 Scheme(比如 yourapp://telegram-auth)作为回调地址
  • 监听 WebView 的导航变化,当跳转至自定义 Scheme 链接时,提取 URL 哈希中的认证参数(如 user_id、auth_date、hash)
  • 将参数传给后端,由后端调用 Telegram 的 getMe API 完成用户身份验证

示例代码片段:

import { WebView } from 'react-native-webview';
import { Linking } from 'react-native';

const TelegramAuthWebView = () => {
  const handleNavigationStateChange = (newState) => {
    const url = newState.url;
    if (url.startsWith('yourapp://telegram-auth')) {
      // 提取哈希中的认证参数
      const authParams = url.split('#')[1];
      // 传递参数给后端验证,之后关闭WebView或跳转回主界面
      Linking.openURL('yourapp://auth-complete');
    }
  };

  const loginHtml = `
    <html>
      <body>
        <script async src="https://telegram.org/js/telegram-widget.js?22" 
                data-telegram-login="你的Bot用户名" 
                data-size="large" 
                data-auth-url="yourapp://telegram-auth" 
                data-request-access="write"></script>
      </body>
    </html>
  `;

  return <WebView source={{ html: loginHtml }} onNavigationStateChange={handleNavigationStateChange} />;
};

方案二:使用社区封装的登录库

社区有针对 React Native 的 Telegram 登录封装库,比如 react-native-telegram-login,这类库已经封装好登录流程,无需自行处理 WebView 和参数提取:

  • 安装库:npm install react-native-telegram-login --save 或 yarn add react-native-telegram-login
  • 配置 Bot Token 和自定义跳转 Scheme
  • 调用库提供的登录方法,获取用户信息后传给后端完成验证

注意:使用前需确认库是否支持 Expo 环境,部分原生库可能需要执行 Expo Prebuild 或 eject 操作。

如果想贴近 OAuth2 风格的流程,可以通过后端做代理实现:

  1. 前端打开 Telegram 应用的 DeepLink:tg://resolve?domain=你的Bot用户名,引导用户给 Bot 发送认证请求
  2. 用户发送请求后,Bot 通过 Telegram API 生成临时授权码并发送给用户
  3. 用户将授权码输入应用,或 Bot 通过 DeepLink 跳转回应用并携带授权码
  4. 应用把授权码传给后端,后端调用 Telegram API 验证授权码并获取用户信息,完成认证

这种方式需要熟悉 Telegram Bot API,核心用到 sendMessage、getChat 等接口。

关键注意事项

  • 所有方案都需要先通过 BotFather 创建 Bot,获取 Bot Token,并配置允许的回调地址(WebView 方案)
  • 身份验证必须在后端完成,禁止仅在前端处理,避免安全风险
  • Expo 环境下需在 app.json 的 expo.scheme 字段中配置自定义跳转 Scheme

内容的提问来源于stack exchange,提问作者Fez Vrasta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 04:27:09