دقیقا ساعت ۱۰ شب توئیتر تپسی پیامی رو منتشر کرد که روز برنامه نویس رو تبریک گفته بود. در اون توئیت عکسی پیوست شده بود و مختصر نوشته بود: روز برنامه نویس مبارک!
از اونجایی که بیخوابی به سرم زده بود عکس رو با دقت باز کردم و محتوای داخلش رو نگاه میکردم. با دیدن CURL در کامند دسکتاپ تصویر حدس زدم خبرایی باشه و درست بود. جلوی کامند curl آدرس api تپسی بود که آدرسش تبریک روز برنامه نویس بود. روالی که در ادامه میگم رو اگر طی میکردید به شما یک کد تخفیف ۵۰ هزارتومانی میداد. البته الان دیگه دیر شده و کد تخفیف ها تموم شده 🙂
ولی خب اگه دلتون میخواد چندتا نکته فنی کوچیک یاد بگیرید ادامه مطلب رو بخونید.
آدرس api که در تصویر اومده این هست:
https://tap33.me/api/v256/happy/programmers/day
یکی از بهترین ابزارها برای فراخوانی یک api ابزار postman هست که هم به صورت افزونه روی گوگل کروم و هم به صورت نرم افزار مجزا میشه نصبش کرد.
خب postman رو باز میکنیم و یک درخواست از نوع get با آدرس بالا ایجاد میکنیم و send میکنیم. نتیجه اولیه یک خطا همراه با توضیحات می باشد.
{
"result": "ERR",
"data": {
"code": "UNAUTHORIZED_ACCESS",
"message": "Nice try, but not good enough! You should add x-authorization
header to your request. ;)"
}
}
در توضیحات گفته شده که دسترسی غیرمجاز هست و نیاز به هدر x-authorization
دارید. این هدر برای احراز هویت هست. داخل این هدر یک کد رمز شده ouath قرار میگیره که اطلاعات رمزنگاری شده از کاربری هست که لاگین کرده. خب حالا از کجا بیاریم؟ از سایت تپسی!
وارد پنل مسافر تپسی بشین و با دادن شماره تلفن لاگین کنین. حالا اگر درخواست های xhr صفحه رو چک کنید میبینین که همراه با هر درخواست داره هدر احراز هویت یا همون authorization رو میفرسته. خب این همونی هست که ما نیاز داریم. تصویر زیر رو ببینید
این کد رو کپی میکنیم و برمیگردیم به postman . در قسمت header کلید x-authorization را با مقداری که کپی کردیم درج میکنیم.
باز هم ناموفق! ایندفه به ما میگه یه چیز دیگه هم کم داری. userid! حالا این رو از کجا بیاریم؟ این رو الان داریمش. فقط خودمون خبر نداریم 🙂 همون مقدار x-authorization در واقع یک رشته رمز شده ست که داخلش userid و کلی اطلاعات دیگه وجود داره. برای اینکه ببینیم چی توش هست سایت jwt.io رو باز میکنیم و در قسمت encode متن رو past میکنیم.
در سمت راست قسمت decode محتوای اصلی رو میتونید ببینید. یک رشته json که user:id هم داخلش دیده میشه. مباحث oauth و jwt مفصل هستن و نمیشه اینجا توضیحشون داد. فقط نکته ی بامزه اینجا اینه که نام قبلی tap30 درشکه بوده. از sub میتونین بینین. حال نداشتن اسم scope ها رو عوض کنند 🙂
خب حالا که userid رو هم داریم برگردیم به postman . چون userid رو به صورت query خواسته هم میشه دستی توی آدرس نوشته و هم از قسمت params کمک گرفت. فرق نمیکنه.
اینم نتیجه نهایی. پیغام داده که ok اما تخفیف هامون تموم شده و فقط روزتون مبارک! ولی بجاش کلی نکته های فنی کار کردیم با هم.
شاد باشین و حال دلتون خوش 🙂
دیدگاهتان را بنویسید