ورود به سیستم کانکت مخصوص اپ دیسکاوری

آپدیت جدید در راه است. پایین صفحه رو ملاحظه نمایید.


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

خوب قصه شبمون رو گفتیم. بپریم سر اصل ماجرا.

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

درخواست رو به این شیوه ارسال می کنیم:

POST https://connect.evand.com/api/oauth2/token
Headers:
Content-Type: application/json
Accept: application/json

{
"grant_type": "discovery_app",
"client_id": "client_test",
"client_secret": "test",
"scope": "",
"mobile": "9100000000",
"event_id": 12345,
"user_access_token": "Bearer ACCESS_TOKEN"
}

توجه کنین که نوع grant مربوطه باید discovery_app باشه.

از جمله دیتاهای مورد نیاز علاوه بر client_id و client_secret که نیازه برای اهراز هویت کلاینت مربوطه ارسال شه، نیازه این اطلاعات زیر هم ارسال شود:

  • موبایل (mobile) کاربر که در سیستم اصلی ایوند باهاش بلیت رویداد کانکت خریداری کرده باشه و موبایله هم به تایید رسیده شده باشه.
  • آی دی رویداد (event_id) ای که کاربر ازش بلیت مربوطه رو تهیه کرده باشه.
  • توکن jwt کاربر (user_access_token) در سیستم اصلی ایوند برای اینکه مطمئن شیم موبایل ارسال مربوط به کاربر مربوطه هست و اینکه تایید هم کرده باشه.


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

{
  "token_type": "Bearer",
  "expires_in": 86400,
  "access_token": "eyJ0e...",
  "refresh_token": "def5..."
}


همین دیگه.
پاشین برین خونه هاتون



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


نظرات

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

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

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

بلیت خریداری شده کاربر در رویداد