(Un) rasmiy Habr ilovasi - HabrApp 2.0: kirish huquqiga ega
Bir oqshom, zerikarli va zerikarli oqshomni varaqlayapman rasmiy Habr ilovasi, yana bir bor barmoqlarimni egdim, har bir ishlamaydigan xususiyat uchun bittadan. Bu erda, masalan, siz izoh bera olmaysiz, bu erda siz ovoz berish huquqidan mahrum bo'lasiz va umuman, nima uchun formulalar ekranda ko'rinmaydi?
Qaror qabul qilindi: bizga qulay, yoqimli, o'zimizga xos narsa kerak edi. Habr uchun shaxsiy arizangiz haqida nima deyish mumkin?
Vaziyatni tushunish uchun sizga bir nechta ekran tasvirlarini beraman.
Shunga o'xshash narsa ko'rinadi u -dan. habr.com ilovasi
"Noqulayliklar" ro'yxati
Siz reytingi 0 dan farq qiladigan nashrni baholay olmaysiz
Izoh yozish har doim ham mumkin emas
Soβrovlar ishlamaydi
Formulalar qorong'u mavzuda ko'rinmaydi (qora va qora)
Barcha xatcho'plar mavjud emas
Ha, dastur o'tgan yilning avgust oyidan beri yangilanmagan, ammo u hali ham yomon. Umuman olganda, uni tuzatish kerak.
Birinchi qism. Kirish qidirilmoqda.
Tez Google so'rovi "habrahabr API" u allaqachon eskirganligini aytadi ombori Github-da, beri yangilanmagan Noyabr 21 2016, va bu, bir lahzaga, ikki yarim yil.
Bu PHP ekanligiga e'tibor bermay, pastga aylantiring va o'qing:
Ilova identifikatorini olish
Foyda olish bu shakl Habrahabr-da siz yangi dasturning mohiyatini va unga API kerak bo'lgan maqsadni qisqacha tasvirlab berishingiz kerak.
Hech qanday savol yo'q, agar sizga kirish kerak bo'lsa, unda sizga kerak. Biz xat yozamiz (qisqartirilgan):
Yozish
PWA asosida Habr uchun ariza berish istagi bor. Buning bir qancha sabablari bor.
Birinchi va eng aniq: Android ilovasi mening shaxsiy talablarimga javob bermaydi.
Ikkinchidan: odatda elektron pochta orqali keladigan barcha turdagi narsalar haqida mahalliy bildirishnomalar etarli emas (masalan, sharhlar).
Uchinchidan: qiziqishlarimni inobatga olgan holda, meni qiziqtiradigan odamlar/markazlar haqida shaxsiy hazm qilish (perspektiv sifatida).
Javob, albatta, unchalik yoqimli emas edi, lekin hech bo'lmaganda halol edi:
Afsuski, bizning API-ga kirish hozircha mavjud emas. APIni yakunlaganimizdan soβng kirishni davom ettirishni rejalashtirmoqdamiz, ammo bizda hozircha aniq sanalar yoβq, chunki Hozirda biz boshqa ustuvor vazifalarni hal qilish bilan bandmiz.
"Yaxshi, muammo yo'q! Biz nimadir o'ylab topamiz!" β dedim oβzimga va izlay boshladim.
Ikkinchi qism. Chuqur qazish ishlari.
Mantiqqa asoslanib, agar dastur ishlayotgan bo'lsa, u API-ga kirish huquqiga ega va u ilovaga ulangan. Keling, tahlil qilaylik.
Biz trafik bilan shug'ullanayotganimiz sababli, Wireshark bizning tanlovimizdir. Telefonni ish stoli kompyuter orqali Internetga ulab, biz dasturni ochamiz va so'rovlarni ko'rib chiqamiz:
Hech narsa aniq emasligi aniq
Ha, hamma narsa shifrlangan, lekin men kriptografiya bilan aralashishni xohlamayman. Keyin dasturning o'ziga qarashingiz kerak.
Dekompilyatsiya qilingan .apk, keling, qidirishni boshlaylik. Har qanday API nimaga muhtoj? To'g'ri, so'nggi nuqta, barcha so'rovlar boradigan joy. Bu http(lar), keling βhttps://β ni topishga harakat qilaylik:
Bu Android virtual mashinasi uchun kod (Dalvik VM), odamlar uchun unchalik tushunarli emas, lekin baribir juda ma'lumotli. Ushbu uchta konstanta, ularning mazmuni va nomi, shuningdek GitHub ombori bo'yicha, usul yordamida kirish tokenini so'rash uchun ishlatiladi. GET.
Keling, batafsilroq ko'rib chiqaylik. Qidiruvda keyingi fayl paydo bo'ladi NetworkModule.smali:
const-string v0, "https://habr.com/api/v1/"
Va bu sizning so'rovlaringiz bilan boradigan joy!
O'z-o'zidan yozilgan mijoz to'g'ri ishlashi uchun faqat bitta narsani tushunish kerak - client_id, bu dastur uchun noyob identifikator bo'lishi mumkin.
Biroq, ushbu matnni manba kodida qidirish tegishli ma'lumotlarni topishga olib kelmadi ...
Ammo to'satdan fayllardan birida ko'zlarim qiziqarli satrlarga tushdi:
Bu, siz tushunganingizdek, jurnalga kirish. Lekin nima yozish?
Uchinchi qism. Bu jurnallar!
Biz foydalanamiz adb logcat ilovalar jurnallarini ko'rish uchun.
Kutilmaganda, jurnallar kutilganidan ham batafsilroq bo'lib chiqdi.
Bu erda biz nafaqat kerakli narsalarga egamiz client_idlekin token foydalanuvchi/ilova va tizimga kirish ΠΈ parol aniq matnda!
Ba'zi fitna nazariyalariJurnallarda login va parolning mavjudligi hech narsaga zarar keltirmaydi, chunki bu jurnallar faqat ildiz huquqlari yoki ulanish orqali o'qilishi mumkin. adb. Ammo Habr-ni o'qiyotgan odamlar orasida disk raskadrovka funksiyasi yoqilgan bo'lishi mumkin bo'lgan Android dasturchilari borligi sababli, bu muammoga aylanadi.
Bunday holda, aeroportda "bepul zaryadlash" hisobni o'g'irlashga olib kelishi mumkin, ammo bu kimga kerak?
Ushbu jurnallardan biz quyidagilarni chiqarishimiz mumkin:
client_id ΠΈ apikeykirish uchun talab qilinadi api;
Foydalanuvchining avtorizatsiya URL manzili (g'alati, lekin bu usul haqida omborda hech narsa yo'q, ehtimol u taqdim etilmagandir?)
Shunday bo'ldi. Ushbu kichik tadqiqotga asoslanib, kichik loyiha ustida ish olib borilmoqda - o'zimizning mobil ilovamiz. Yordam bermoqchi bo'lganlardan xabar yozishlarini, qolganlardan esa ovoz berishlarini so'rayman (chunki bu kimgadir kerak yoki yo'qligini tushunmoqchiman).
E'tiboringiz uchun tashakkur!
So'rovda faqat ro'yxatdan o'tgan foydalanuvchilar ishtirok etishlari mumkin. tizimga kirishiltimos.
Habr mobil ilovasidan foydalanasizmi?
Ha, men foydalanaman, men bundan mamnunman
Ha, men foydalanaman, dastur noqulaylik tug'diradi
Yo'q, men telefonimda veb-versiyasidan foydalanaman
Yo'q, men Habrni kompyuterimdan foydalanaman
357 foydalanuvchi ovoz berdi. 30 nafar foydalanuvchi betaraf qolgan.