ایمیل و رمز عبور
ثبتنام، ورود، تأیید ایمیل و بازیابی رمز عبور با Abrova Auth. رمزهای عبور بهصورت هش یکطرفه ذخیره میشوند؛ لینکهای ایمیلی فقط آدرسهای لینکی را که مجاز کردهاید باز میکنند و فقط یک بار کار میکنند.
کاربران با یک آدرس ایمیل و رمز عبور حساب میسازند و سپس با همانها وارد میشوند. Abrova Auth ایمیلهای تأیید و بازیابی رمز عبور را میفرستد؛ لینکها اپ (یا صفحهی وب) شما را با یک token یکبارمصرف باز میکنند و اپ آن را به SDK برمیگرداند.
راهاندازی در کنسول#
- Abrova Auth › روشهای ورود: ایمیل و رمز عبور را روشن کنید. کوتاهترین رمز عبور (۸ تا ۱۲۸ کاراکتر، پیشفرض ۸) را تعیین کنید و مشخص کنید آیا کاربران پیش از ورود به ایمیل تأییدشده نیاز دارند یا نه.
- Abrova Auth › تنظیمات › آدرسهای لینک: آدرسهایی را که لینکهای ایمیلی شما اجازه دارند باز کنند اضافه کنید، مثلاً
https://example.com/authیاmyapp://auth. هر کدام باید یک آدرسhttps://یا URL scheme خودِ اپ شما باشد.
ثبتنام#
// Flutter
final result = await AbrovaAuth.instance.signUpWithEmail(
email: email,
password: password,
redirectUrl: 'https://example.com/auth/verify', // optional: sends a verification e-mail
);
if (!result.signedIn) {
// The project requires a verified e-mail: ask the user to open the link first.
}// iOS
let result = try await AbrovaAuth.shared.signUp(email: email, password: password,
redirectURL: "https://example.com/auth/verify")// Android val result = AbrovaAuth.shared.signUp(email, password, redirectUrl = "https://example.com/auth/verify")
// Web and React Native
const result = await auth.signUpWithEmail({ email, password, redirectUrl: 'https://example.com/auth/verify' });نتیجه verificationSent (ایمیل تأیید ارسال شده است) و signedIn را به شما میگوید. وقتی ایمیل تأییدشده الزامی است روشن باشد، کاربر تا وقتی لینک را باز نکند و سپس وارد نشود، وارد نمیشود.
رمز عبور باید دستکم به اندازهی کوتاهترین طول تعیینشده برای پروژه باشد، حداکثر ۱۲۸ کاراکتر، و جزو رمزهای خیلی رایج نباشد. در غیر این صورت فراخوانی با WEAK_PASSWORD شکست میخورد. آدرسی که از قبل حساب دارد با EMAIL_TAKEN شکست میخورد.
ورود#
| SDK | فراخوانی |
|---|---|
| Flutter | signInWithEmail(email: email, password: password) |
| iOS | signIn(email: email, password: password) |
| Android | signIn(email, password) |
| Web، React Native | signInWithEmail({ email, password }) |
رمز اشتباه و ایمیل ناشناخته هر دو با INVALID_CREDENTIALS شکست میخورند، تا پاسخ هرگز فاش نکند چه کسی حساب دارد. شکستهای پشت سر هم برای یک آدرس یا از یک مکان کُند میشوند (RATE_LIMITED).
تأیید ایمیل#
لینک تأیید، <your link address>?token=... را باز میکند و ۲۴ ساعت اعتبار دارد. token را بخوانید و به SDK بدهید:
| SDK | فراخوانی |
|---|---|
| Flutter | verifyEmail(token) |
| iOS | verifyEmail(token: token) |
| Android | verifyEmail(token) |
| Web، React Native | verifyEmail({ token }) |
تأیید فقط ایمیل را تأییدشده علامت میزند؛ کاربر را وارد نمیکند. برای ارسال دوبارهی ایمیل برای کاربرِ واردشده، sendEmailVerification را با یک redirectUrl صدا بزنید.
بازیابی رمز عبور فراموششده#
sendPasswordResetرا با ایمیل و یکredirectUrlصدا بزنید. پاسخ چه آدرس حساب داشته باشد چه نه، یکسان است.- ایمیل به
<redirectUrl>?token=...لینک میدهد که ۳۰ دقیقه اعتبار دارد و فقط یک بار قابل استفاده است. - صفحهی «رمز عبور جدید» را نشان دهید و
resetPasswordرا با token و رمز عبور جدید صدا بزنید.
// Flutter await AbrovaAuth.instance.sendPasswordReset(email, redirectUrl: 'https://example.com/auth/reset'); // ... in the screen the link opens: await AbrovaAuth.instance.resetPassword(tokenFromLink, newPassword);
بازیابی رمز، همهی نشستهای کاربر را پایان میدهد و ایمیل را تأییدشده علامت میزند. کاربر را وارد نمیکند: کاربر با رمز عبور جدید وارد میشود.
دادن رمز عبور به کاربر ناشناس#
linkPassword یک ایمیل و رمز عبور به کاربرِ واردشده (معمولاً ناشناس) اضافه میکند. شناسه همان میماند. وقتی کاربر دیگری آن آدرس را داشته باشد، با EMAIL_TAKEN شکست میخورد.
ایمیلها#
Abrova Auth سه ایمیل میفرستد: تأیید ایمیل، بازیابی رمز عبور و لینک یکبارمصرف. نام پروژهی شما در آنها میآید و از آدرس ابرووا ارسال میشوند. ارسال برای هر آدرس (چند عدد در ساعت) و برای هر پروژه محدود است.
redirectUrlی که با یکی از آدرسهای لینک شما شروع نشود، پیش از ارسال هر ایمیلی با INVALID_INPUT رد میشود. این کار جلوی سوءاستفاده از پروژهی شما برای ارسال لینکهایی به مقصد دیگر را میگیرد.
خطاها#
| کد | معنا |
|---|---|
| INVALID_CREDENTIALS | ایمیل یا رمز عبور اشتباه است. |
| EMAIL_TAKEN | حسابی با این ایمیل از قبل وجود دارد. |
| WEAK_PASSWORD | خیلی کوتاه، خیلی بلند، یا جزو رمزهای رایج است. |
| EMAIL_NOT_VERIFIED | پروژه ایمیل تأییدشده میخواهد و این ایمیل هنوز تأیید نشده است. |
| TOKEN_INVALID | لینک تأیید یا بازیابی نامعتبر است، قبلاً استفاده شده، یا منقضی شده است. |
| INVALID_INPUT | ایمیل معتبر نیست، یا redirectUrl جزو آدرسهای لینک شما نیست. |
| NOT_CONFIGURED | ارسال ایمیل موقتاً در دسترس نیست. |
| USER_DISABLED | این کاربر را در کنسول غیرفعال کردهاید. |