ابرووا
شروع رایگان
☰ فهرست مستندات · کد تلگرام

کد تلگرام

ورود با شماره تلفن و کد ۶ رقمی که به جای پیامک از طریق ربات تلگرام خودتان ارسال می‌شود. ربات را در کنسول ابرووا راه بیندازید؛ کاربران یک بار شماره‌شان را با ربات به اشتراک می‌گذارند و از آن به بعد کدها را همان‌جا می‌گیرند.

به‌روزرسانی: ۵ آبان ۱۴۰۵
کد تلگرام.

کاربر شماره تلفنش را وارد می‌کند و یک کد ورود ۶ رقمی از ربات تلگرام پروژه‌ی شما می‌گیرد. جایی که تلگرام رایج است، این روش جای پیامک را می‌گیرد، بدون هزینه برای هر پیام. تلگرام تأیید می‌کند که شماره متعلق به حساب تلگرام کاربر است، پس کد همیشه فقط به صاحب آن شماره می‌رسد.

تلگرام در ایران فیلتر است اما پرکاربرد است، و به Google یا Apple وابسته نیست. کاربرانی که تلگرام ندارند به روش دیگری مثل ایمیل یا لینک یک‌بارمصرف نیاز دارند.

ساخت و وصل کردن ربات#

  1. در تلگرام با @BotFather صحبت کنید، /newbot را بفرستید و یک نام و username برای ربات‌تان انتخاب کنید (مثلاً MyAppLoginBot). BotFather یک bot token به شما می‌دهد.
  2. در کنسول ابرووا، Abrova Auth › روش‌های ورود را باز کنید، تلگرام را روشن کنید و bot token را جای‌گذاری کنید.

Abrova Auth توکن را با تلگرام بررسی می‌کند و ربات را وصل می‌کند. توکن رمزگذاری‌شده ذخیره می‌شود و دیگر نمایش داده نمی‌شود. از ربات فقط برای Abrova Auth استفاده کنید: ابرووا پیام‌های ورودی آن را در دست می‌گیرد.

کاربر چطور وارد می‌شود#

  1. ۱کاربر شماره تلفن را وارد می‌کندبا قالب بین‌المللی، مثلاً +989121234567. اپ شما requestTelegramCode را صدا می‌زند.
  2. ۲فقط بار اول: کاربر ربات را وصل می‌کنداگر این شماره هنوز با ربات شما صحبت نکرده باشد، پاسخ sent: false و یک botUrl دارد. آن را باز کنید: کاربر Start را می‌زند و روی «Share my phone number» ضربه می‌زند.
  3. ۳کد در تلگرام می‌رسدیک کد ۶ رقمی با اعتبار ۵ دقیقه. بعد از بار اول، کدها بلافاصله می‌رسند (sent: true).
  4. ۴کاربر کد را تایپ می‌کنداپ شما verifyTelegramCode را با شماره و کد صدا می‌زند.

ربات فقط شماره‌ی خودِ کاربر را می‌پذیرد که با دکمه‌ی تلگرام به اشتراک گذاشته شده باشد. مخاطبِ فورواردشده‌ی شخص دیگر رد می‌شود.

کد#

dart
// Flutter
final auth = AbrovaAuth.instance;
final r = await auth.requestTelegramCode('+989121234567');
if (!r.sent && r.botUrl != null) {
  await launchUrl(Uri.parse(r.botUrl!)); // url_launcher: the user starts the bot and shares the number
}
// ... the user types the code from Telegram:
await auth.verifyTelegramCode('+989121234567', code);
swift
// iOS
let r = try await AbrovaAuth.shared.requestTelegramCode(phone: "+989121234567")
if !r.sent, let url = r.botURL { await UIApplication.shared.open(url) }
try await AbrovaAuth.shared.verifyTelegramCode(phone: "+989121234567", code: code)
kotlin
// Android
val r = AbrovaAuth.shared.requestTelegramCode("+989121234567")
if (!r.sent) startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(r.botUrl)))
AbrovaAuth.shared.verifyTelegramCode("+989121234567", code)
typescript
// Web and React Native
const { sent, botUrl } = await auth.requestTelegramCode({ phone: '+989121234567' });
if (!sent && botUrl) window.open(botUrl); // React Native: Linking.openURL(botUrl)
await auth.verifyTelegramCode({ phone: '+989121234567', code });

اولین کد موفق برای یک شماره، کاربر را می‌سازد. کدهای بعدی برای آن شماره به همان کاربر وارد می‌شوند.

قواعد#

قاعدهمقدار
کد۶ رقم، با اعتبار ۵ دقیقه
تلاش‌ها۵ بار برای هر کد؛ بعد کد جدید بخواهید
کد برای هر شماره۵ عدد در ساعت
قالب شمارهبین‌المللی، با + و کد کشور

وقتی تلگرام روشن است، getMethods() نام کاربری ربات را به‌صورت telegramBot برمی‌گرداند، اگر بخواهید آن را نشان دهید («کدها از @MyAppLoginBot می‌آیند»).

خطاها#

کدمعنا
INVALID_CREDENTIALSکد اشتباه است، منقضی شده، یا تعداد تلاش‌ها تمام شده است.
INVALID_INPUTشماره تلفن در قالب بین‌المللی نیست، یا کد ۶ رقمی نیست.
RATE_LIMITEDکدهای بیش از حد برای این شماره یا از این مکان. بعد از retryAfterSec دوباره امتحان کنید.
NOT_CONFIGUREDتلگرام روشن است، اما هیچ رباتی وصل نیست.
USER_DISABLEDاین کاربر را در کنسول غیرفعال کرده‌اید.
METHOD_DISABLEDورود با تلگرام برای پروژه خاموش است.
این صفحه مفید بود؟
گزارش مشکل