لوگو عباس اویسی

متولد تهران، توسعه دهنده‌ی اندروید، پیگیر فوتبال. ارشد نرم افزار و علاقمند به جنبه‌های مختلف توسعه‌ی نرم افزار

  • عمومی
  • اندروید
  • جنریتور حلما
  • فریم‌ورک dagger
  • وب‌سرویس آموزشی فیلم‌ها

اضافه شدن احراز هویت به وب‌سرویس فیلم‌ها

مرداد ۲, ۱۳۹۶

چندماه از وقتی که وب‌سرویس MoviesApi رو با هدف آموزشی درست کردم میگذره. توی این مدت فرصت نشده بود تا قابلیتی بهش اضافه کنم. بالاخره دیروز بعد چند ساعت کلنجار رفتن با لاراول تونستم امکان احراز هویت از طریق oAuth رو براش درست کنم. مزیتش اینه اگر کسی میخواد احراز هویت از طریق oAuth با password grant type  رو توی اندروید، iOS یا هر زبان دیگه‌ای یاد بگیره، میتونه با این وب‌سرویس تمرین کنه. برای پیاده‌سازی oAuth از Passport استفاده کردم و فقط یه تغییر کوچیک دادم که نیاز نباشه client_secret و client_id برای دریافت توکن ارسال بشه.

قبل از لاگین کردن باید یک کاربر در وب‌سرویس بسازید. اطلاعات کاربر (نام، ایمیل و پسورد) رو باید با فرمت Json به آدرس /api/v1/register  از طریق متد Post ارسال کنید. توی Postman اینجوری میشه:

1

اگر پاسخ به شکل زیر بود،یعنی کاربر به درستی در سیستم ثبت شده و وب‌سرویس اطلاعات کاربر جدید رو در پاسخ فرستاده.

2

بعد ثبت‌ کاربر میتونید از طریق ارسال اطلاعات موردنیاز برای لاگین بصورت form data و متد Post به آدرس /oauth/token یک access token و refresh token بگیرید. برای لاگین اطلاعات زیر نیاز هست:

3

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

4

حالا به وسیله‌ی access_token میتونید از آدرس‌هایی که نیاز به احراز هویت دارند ، استفاده کنید. فعلا فقط یک آدرس هست که اطلاعات خود کاربر رو نشون میده. وقتی توکن رو توی Header میذارید، اون Bearer اولش یادتون نداره. تصویر زیر نحوه‌ی ارسال درخواست به آدرس /api/user و پاسخ وب‌سرویس رو نشون میده:

۵

مدت زمان اعتبار هر access_token پنج دقیقه هست و وقتی که access_token منقضی شد، باید یک درخواست به شکل زیر به وب‌سرویس بزنید. برای refresh کردن access_token باید از refresh_token استفاده کنید. اینباربه جای password در قسمت grant_type باید refresh_token رو بذارید. مثل تصویر زیر:6

سعی میکنم در آینده‌ای نزدیک پروژه‌ی اندروید SearchMovies که توی گیت‌هاب هست رو آپدیت کنم و قابلیت لاگین رو بهش اضافه کنم.