---
title: "صفحه‌ی ورود آماده"
description: "صفحه‌ی ورود ابرووا را با یک فراخوانی از اپ خود باز کنید، مثل FirebaseUI: ایمیل و رمز، لینک یک‌بارمصرف، تلگرام، Google، Apple و مهمان، به انگلیسی و فارسی. بدون ساختن فرم."
product: auth
language: fa
url: https://abrova.ir/docs/auth/sign-in-ui
updated: 2026-11-08
---

# صفحه‌ی ورود آماده

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

> **یک فراخوانی، بدون فرم**
>
> همه‌ی SDKهای ابرووا احراز هویت یک صفحه‌ی ورود آماده دارند، مثل FirebaseUI. اپ آن را باز می‌کند، کاربر وارد می‌شود و اپ کاربرِ واردشده را پس می‌گیرد. فقط روش‌هایی را نشان می‌دهد که در **ابرووا احراز هویت › روش‌های ورود** روشن کرده‌اید، به انگلیسی یا فارسی، و داخل خود SDK است: چیز دیگری برای نصب نیست و چیزی روی سرور میزبانی نمی‌شود.

## مرحله 1: باز کردن صفحه

روی صفحه‌های پهن و تبلت به‌شکل پنجره و روی گوشی تمام‌صفحه باز می‌شود. کاربرِ واردشده را برمی‌گرداند، یا اگر کاربر آن را بست، هیچ.

```dart
// Flutter
import 'package:abrova_auth/abrova_auth_ui.dart';

final user = await AbrovaSignIn.show(context, options: const AbrovaSignInOptions(appName: 'My Shop'));
```

```swift
// iOS (15 and later)
import AbrovaAuth

if let result = await AbrovaSignIn.present(from: self, options: AbrovaSignInOptions(appName: "My Shop")) {
    print(result.userId)
}
```

```kotlin
// Android
AbrovaSignIn.show(this, options = AbrovaSignInOptions(appName = "My Shop")) { result ->
    if (result != null) Log.d("Auth", "signed in: ${result.userId}")
}
// یا در یک coroutine: val result = AbrovaSignIn.await(this)
```

```typescript
// Web (هر فریم‌ورکی، یا بدون فریم‌ورک)
import { openSignIn } from '@abrova/auth-web/ui';

const result = await openSignIn(auth, { appName: 'My Shop' });
```

```tsx
// React Native
import { useAbrovaSignIn } from '@abrova/auth-react-native/ui';

const signIn = useAbrovaSignIn(auth, { appName: 'My Shop' });
// <Button title="ورود" onPress={() => signIn.open()} /> و {signIn.element} را رندر کنید
```

نشست را SDK مثل هر ورود دیگری نگه می‌دارد، پس `currentUser`، توکن و SDKهای دیگر ابرووا بلافاصله کار می‌کنند.

برای گذاشتن فرم در صفحه‌ی خودتان به‌جای پنجره: `AbrovaSignInScreen` (فلاتر)، `AbrovaSignInView` (آی‌اواس و اندروید)، `mountSignIn(element, auth)` (وب)، `<AbrovaSignInScreen />` (ری‌اکت نیتیو).

## مرحله 2: انتخاب آنچه نشان می‌دهد

صفحه از ابرووا می‌پرسد کدام روش‌ها روشن‌اند و فقط همان‌ها را نشان می‌دهد. بعضی چیزی هم از اپ شما لازم دارند:

| روش | کی نشان داده می‌شود |
| --- | --- |
| `ایمیل و رمز` | وقتی روشن است. ساخت حساب و فراموشی رمز را هم دارد. |
| `لینک یک‌بارمصرف` | وقتی روشن است و magicLinkRedirectUrl را بدهید، پیوندی که اپ شما را باز می‌کند. اپ آن را مثل قبل با signInWithMagicLink(token) تمام می‌کند. |
| `تلگرام` | وقتی روشن است. کاربر شماره‌ی موبایل و کدی را که تلگرام می‌فرستد وارد می‌کند. |
| `Google، Apple` | وقتی روشن است و تابعی بدهید که توکن ID را می‌گیرد (پایین‌تر). |
| `مهمان` | وقتی ورود ناشناس روشن است و allowGuest = true بدهید. پیش‌فرض خاموش: هر مهمان یک کاربر تازه است و در کاربران فعال ماهانه‌ی طرح شما شمرده می‌شود. |

## مرحله 3: گزینه‌ها

| گزینه | چه می‌کند |
| --- | --- |
| `appName، logo` | عنوان («ورود به My Shop») و تصویری بالای آن. |
| `languageCode` | en یا fa (راست به چپ). پیش‌فرض: زبان اپ یا دستگاه، و انگلیسی اگر هیچ‌کدام نباشد. |
| `allowGuest` | «ادامه به‌عنوان مهمان» را نشان می‌دهد. پیش‌فرض خاموش. |
| `google، apple` | تابع شما که برای nonce هش‌شده‌ی داده‌شده توکن ID می‌گیرد. دکمه فقط وقتی دیده می‌شود که آن را بدهید. |
| `magicLinkRedirectUrl` | دکمه‌ی لینک یک‌بارمصرف را نشان می‌دهد. باید یکی از آدرس‌های بازگشت مجاز پروژه باشد. |
| `verifyRedirectUrl، resetRedirectUrl` | صفحه‌های خودتان برای پیوند تأیید و بازیابی. پیش‌فرض: صفحه‌های خود ابرووا. |
| `openUrl` | وقتی کاربر باید اول ربات را باز کند، پیوند ربات تلگرام را باز می‌کند. بدون آن، پیوند برای کپی نشان داده می‌شود. |
| `color (وب، ری‌اکت نیتیو)` | رنگ دکمه. روی وب متغیرهای CSS مثل --abrova-accent هم هست. |

صفحه ظاهر اپ شما را دنبال می‌کند: تم در فلاتر و اندروید، رنگ tint در آی‌اواس، `color` در وب و ری‌اکت نیتیو، و حالت تاریک همه‌جا.

## Google و Apple

Google و Apple با SDK خودشان کار می‌کنند (در آی‌اواس `apple: AbrovaSignInOptions.nativeApple` آن را خودش اجرا می‌کند)؛ راه‌اندازی آن‌ها در صفحه‌های [Google](https://abrova.ir/docs/auth/google) و [Apple](https://abrova.ir/docs/auth/apple) است. یک تابع کوچک به صفحه بدهید: nonce هش‌شده را می‌گیرد، ورود Google یا Apple شما را با آن اجرا می‌کند و توکن ID را برمی‌گرداند، یا اگر کاربر لغو کرد هیچ. صفحه nonce خام را نگه می‌دارد و به ابرووا می‌فرستد، پس توکنِ دزدیده‌شده دوباره قابل استفاده نیست.

```dart
AbrovaSignInOptions(
  google: (hashedNonce) async => /* ورود Google شما با این nonce */ idToken,
)
```

## زبان

صفحه به انگلیسی یا فارسی است، از زبان اپ شما یا `languageCode`. تا وقتی باز است، ایمیل‌هایی که می‌فرستد (تأیید ایمیل، بازیابی رمز، لینک یک‌بارمصرف) هم به همان زبان‌اند، مگر اینکه `languageCode` کلاینت را خودتان تعیین کرده باشید. برای تغییر متن آن‌ها [قالب‌های ایمیل](https://abrova.ir/docs/auth/email-templates) را ببینید.

## امن از پایه

- پیام خطا از کد خطا و به زبان کاربر می‌آید؛ پیام‌های فنی ابرووا هرگز نشان داده نمی‌شوند.
- هر بار یک کار، و تا وقتی ورودی در جریان است صفحه بسته نمی‌شود، پس هیچ ورودی بعد از اینکه به اپ گفته شد «بسته شد» انجام نمی‌شود.
- رمز وقتی کاربر وارد می‌شود و وقتی صفحه بسته می‌شود پاک می‌شود.
- پیوند ربات تلگرام فقط وقتی باز می‌شود که آدرس `https://t.me` باشد.
- روی وب فرم در یک shadow root است و فقط متن می‌نویسد، پس CSS صفحه‌ی شما آن را خراب نمی‌کند و چیزی که نشان می‌دهد به‌عنوان کد اجرا نمی‌شود.

> **نسخه‌ی SDK**
>
> صفحه‌ی آماده به SDK ابرووا احراز هویت نسخه‌ی **0.4.0** نیاز دارد: فلاتر، آی‌اواس، اندروید، وب یا ری‌اکت نیتیو.

## قدم‌های بعدی

- [ایمیل و رمز عبور](https://abrova.ir/docs/auth/email-password)
- [قالب‌های ایمیل](https://abrova.ir/docs/auth/email-templates)
- [استفاده با محصولات دیگر ابرووا](https://abrova.ir/docs/auth/other-products)
