تایید شماره موبایل پروفایل کاربر ایوند

سلام و صدها سلامی دیگر

تاریخچه
در حال حاضر که این متن آماده می شه روش تایید شماره موبایل پروفایل کاربر در ایوند به شیوه ای انجام می شه که یه توضیح ای در موردش می دیم و اینکه در آینده ای نزدیک قرار به حذف شدنش خواهد بود و تنها راه برای تایید به شیوه جدید که به زودی به بررسیش خواهیم رسید.

شیوه قدیمی برای تایید شماره موبایل پروفایل بدین شکل است که درخواستی به ریسورس 
POST https://api.evand.com/users/USER_ID/verifyMobile
ارسال می شه که باعث ارسال کدی ۵ یا ۶ به شماره موبایل ای که همراه درخواست فوق ارسال می شه، می شده است.
سپس برای تایید شماره موبایل مربوطه درخواست دیگری به ریسورس 
GET https://api.evand.com/auth/confirmMobile/5_OR_6_DIGIT_VERIFICTION_CODE
جهت تایید شماره موبایل ذخیره شده در پروفایل کاربری ارسال می شد.

یه سری نکاتی در رابطه با این شیوه قدیم وجود داره که بهتره یه اشاره ای بهشون بشه:
  • نکته اول اینه که برای درخواست اولی نیاز به آی دی کاربر بود، با اینکه هدر مربوطه جهت اهراز هویت ارسال می شد. این مسئله در ریسورس جدید حل شده و نیازی به ارسال آی دی کاربر نیست.
  • نکته دوم این بود که ریسورس اول بالایی علاوه بر ارسال کد تایید، باعث آپدیت شماره موبایل کاربر مربوطه با شماره موبایل ای که ارسال کردید می شد. مواردی که می شه بهش اشاره کرد اینه که این مسئله ولیدیشن مربوط به خود را داراست که نیاز می شه هر دو سمت کلاینت و بک هندل بشه. در حالی که ریسورس ای برای آپدیت شماره موبایل کاربر وجود دارد و نیازی به این عمل توسط این ریسورس نیست و همچین مسئولیت ای بهتره بهش داده نشه. که این رفتار در ریسورس جدید تغییر کرده و شماره موبایل با یه ریسورس آپدیت و کد تاییده بهش ارسال نخواهد شد.
  • کد تاییده ارسالی قبلا ۶ رقمی بوده که البته این به ۵ رقمی در دیپلوی قبلی تغییر کرده ولی خوب دلیل اصلی این تسک همین ۶ رفمی بودنش بود که این تغییرات هم همراهش رخ دادند. الان کد تایید ارسالی در ریسورس جدید ۵ رقمی خواهد بود که مثل باقی جاها در سیستم شود.
  • مورد بعدی، اینه که وقتی درخواست ارسال کد تایید می شد، اطلاعات کاربر مربوطه در همان ریسورس هم برگشت داده می شد! نمی دونم چه نیازی به این هست. ریسورس ای برای این کار وجود دارد و در صورت نیاز به دریافت اطلاعات کاربر می شه از ریسورس مربوط به خود استفاده کرد و این اطلاعت در ریسورس جدید برگشت داده نخواهد شد.
  • مورد نهایی هم مثل قبلی، هنگام درخواست کد تاییدیه، در نهایت access token کاربر از طریق هدر بهش ارسال می شه! این مسئله در ریسورس جدید اعمال نخواهد شد و توکن ای با درخواست کد تاییدیه تحویل کاربر داده نمی شه.
  • نکته صد در صد دیگه آخری، در مورد زمان منقضی شدن کد تاییدیه هست. در بخش پروفایل کاربر در وب سایت ایوند، زمان منقضی شدن ۲ دقیقه تعیین شده است. البته این زمان بنظر ۱ دقیقه هست. از طرفی در ریسورس جدید ای که کد تاییدیه ارسال می شه ۱ دقیقه خواهد بود.

این نکات فوق مربوط به ریسورس درخواست کد تایید (POST .../verifyMobile) بود .

یه سری نکات راجب ریسورس دومی وجود داره یه اشاره ای هم به آنها داشته باشیم:
  • یه مشکل امنیتی ای الان در این ریسورس ها وجود داره و قابل تکرار هم هست که باعث می شه بشه شماره موبایل شخص دیگری رو تایید کرد! جزئیات این مسئله رو بصورت عمومی نمی نویسم و در صورت نیاز به دانستن می تونید شخصا بپرسید.
  • دو مورد مربوط به ریسورس قبلی اینجا هم اتفاق می افته. یکی برگشت داده شدن اطلاعات کاربر و دیگری ارسال access token از طریق هدر به کاربر است که در ریسورس های جدید این مورد رو نخواهیم داشت. و برای گرفتن access token جدید، روش دیگری خواهیم داشت و در صورت نیاز قابل استفاده خواهد بود که در موردش توضیحی خواهیم داد.



روش جدید تایید شماره موبایل پروفایل کاربر
در این روش همچنان نیاز است ۲ درخواستی به ریسورس های مربوطه ارسال نماییم.
درخواست اولی جهت دریافت کد تایید به ریسورس زیر خواهد بود:
POST https://api.evand.com/mobile/verification-codes
نحوه تعامل با ریسورس فوق در صفحه مربوط به خودش توضیح داده شده:

بعد از درخواست کد تایید، نیازه که درخواستی مبنی بر تایید شماره موبایل پروفایل کاربر ارسال نمایید:
POST https://api.evand.com/users/me/verify-mobile
Header:
Authorization: Bearer ACCESS_TOKEN
{
"verification_code": VERIFICATION_CODE
}

برای ارسال درخواست فوق نیاز است که access token کاربر رو از طریق هدر ارسال نمایید.
کد تاییدیه ای که به شماره موبایل کاربر ارسال می شود رو هم نیاز است کنار درخواست مربوطه از طریق فیلد verification_code ارسال نمایید.

در صورت موفقیت آمیز بودن عملیات، شماره موبایل کاربر تایید خواهد شد.

بروز خطا
ممکن است حین تایید شماره موبایل، به خطا بخوریم. از جمله خطاهایی که بهش می خوریم به شرح زیر است:
خطا ها به کد ۴۲۲ برگشت داده خواهد شد. و البته صرفا متنی دربرخواهند داشت که مستقیم می شه به کاربر نشان داد:
  • در صورتی که شماره موبایل ای در پروفایل کاربر تعیین نشده باشه. (شماره موبایل ای جهت تایید در پروفایل شما تعیین نشده است!)
  • در صورتی که شماره موبایل با کد تاییده مچ نباشه یا منقضی شده باشه. (کد تاییدیه نامعتبر است.)


نکته جذاب:
مسئله ای که وجود داره و بهش اشاره شد این بود که بعد از به تایید رساندن شماره موبایل کاربر، توکن جدیدی توسط api ساخته و از طریق هدر به کلاینت برگشت داده می شه.
حدسم از کاربرد این عمل این هست که شماره موبایل داخل توکن اهراز هویت کاربر آپدیت بشه و توکن جدید که شماره موبایل جدید توش باشه برگشت داده بشه.
متاسفانه نمی دونم کاربرد این شماره موبایل برای کلاینت های موبایل و وب چی هست.
در صورت نیاز به تولید access token جدید، می تونید از همان کد تایید که برای کاربر ارسال شده استفاده نمایید و عمل ورود با موبایل رو انجام بدید و به این شکل access token جدید می گیرید بدون نیاز به اینکه دوباره کد تایید ای به کاربر ارسال بشه. یعنی از همان یه کد می شه برای ۲ عمل استفاده کنید.
اگرم نیاز به access token جدید داشته باشه که نیازی به این عمل نیست.


ریسورس های قدیمی deprecate شده
همانطور که در بخش اول این صفحه صحبت شد، یه سری ریسورس هایی داریم که استفاده می شه و با ریسورس های جدید جایگزین خواهند شد.
در حال حاضر ریسورس های قدیمی به کار خود ادامه می دهند و از دسترسی خارج نشده اند که زمانی به کلاینت ها بده که بتونن سیستمشون رو آپدیت کنند.

ولی در نهایت دو ریسورس زیر حذف و از صحنه روزگار حذف خواهند شد:
POST https://api.evand.com/users/USER_ID/verifyMobile
GET https://api.evand.com/auth/confirmMobile/5_OR_6_DIGIT_VERIFICTION_CODE

لطفا در صورت امکان به دو ریسورس فوق وابسته نباشید، که خدای نکرده منجر به شکست عشقی نشه.


سخن دل
در صورتی که ریسورس های جدید، کمبودی داره و کامل نیازهاتون رو پوشش نمی ده. لطفا بچه های بک اندی رو از مسئله آگاه سازید که تغییرات مد نظرتان اعمال شده تا به مقصود و آرزوی خویش برسید.

نظرات

پست‌های معروف از این وبلاگ

لیست کاربران نشان شده - سرویس کانکت

استفاده از Refresh Token جهت دریافت توکن‌های معتبر جدید (کانکت)

پروفایل عمومی کاربران کانکت