(Un)aplikasi Habr resmi - HabrApp 2.0: entuk akses

Siji sore languid lan wis cukup boring, aku, leafing liwat resmi Aplikasi Habr, sepisan maneh aku mbengkongaken driji, siji kanggo saben fitur non-makarya. Ing kene, contone, sampeyan ora bisa menehi komentar, ing kene sampeyan ora duwe hak milih, lan umume, kenapa rumus ora katon ing layar?

(Un)aplikasi Habr resmi - HabrApp 2.0: entuk akses
Diputusake: kita butuh sing nyaman, nyenengake, sing kita dhewe. Apa babagan aplikasi sampeyan dhewe kanggo Habr?
Ayo kula menehi sawetara gambar kanggo ngerti kahanan.

(Un)aplikasi Habr resmi - HabrApp 2.0: entuk aksesPiye wae katon kaya iki iku - saka. aplikasi habr.com

Dhaptar "inconveniences"

  • Sampeyan ora bisa menehi rating publikasi sing ratinge beda karo 0
  • Ora mesthi bisa nulis komentar
  • Jajak pendapat ora bisa
  • Rumus ora katon ing tema peteng (ireng ireng)
  • Ora kabeh tetenger kasedhiya

Ya, aplikasi kasebut durung dianyari wiwit Agustus taun kepungkur, nanging isih ala. UmumΓ©, kudu didandani.

Bagean siji. Nggolek akses.

Pitakon Google Cepet "habrahabr API" ngandika iku wis cukup outdated gudang ing Github, ora dianyari wiwit November 21 2016, lan iki, kanggo wayahe, rong taun setengah.

Nglirwakake kasunyatan manawa iki PHP, gulung mudhun lan waca:

Njupuk ID Aplikasi

Njupuk kauntungan wangun iki ing Habrahabr, sampeyan kudu njlΓ¨ntrΓ¨hakΓ© sedhela inti saka aplikasi anyar lan tujuan sing perlu API.

Ora ana pitakonan, yen sampeyan kudu entuk akses, mula sampeyan butuh. Kita nulis layang (disingkat):

Layang

Ana kepinginan kanggo nggawe aplikasi kanggo Habr adhedhasar PWA. Ana sawetara alasan kanggo iki. 

Sing pertama lan sing paling jelas: aplikasi Android ora nyukupi syarat pribadiku.

Kapindho: ora cukup kabar asli babagan kabeh perkara sing biasane teka liwat email (komentar, contone).

Katelu: digests pribadi (minangka perspektif) ing wong / hub sing narik kawigaten kula, njupuk menyang akun kapentinganku.

Jawaban, mesthi, ora nyenengake, nanging paling jujur:

Sayange, akses menyang API kita saiki ora kasedhiya. We rencana kanggo nerusake nyedhiyani akses sawise kita rampung finalizing API, nanging kita durung duwe tanggal pas, amarga Saiki kita sibuk ngrampungake tugas prioritas liyane.

β€œOke, ora masalah! Kita bakal nggawe sesuatu!" - Aku marang aku lan miwiti looking.

Bagian loro. Penggalian jero.

Adhedhasar logika, yen aplikasi wis mlaku, banjur nduweni akses menyang API, lan hardwired menyang aplikasi. Ayo analisa.

Amarga kita ngatasi lalu lintas, Wireshark dadi pilihan kita. Ora tanpa rasa lara, sawise nyambungake telpon menyang Internet liwat komputer desktop, kita mbukak aplikasi lan ndeleng panjalukan:

(Un)aplikasi Habr resmi - HabrApp 2.0: entuk akses
Cetha ora ana sing jelas

Ya, kabeh wis dienkripsi, nanging aku ora pengin ngganggu kriptografi. Banjur sampeyan kudu katon ing aplikasi kasebut dhewe.

Dikompilasi WMV, ayo miwiti nggoleki. Apa wae sing dibutuhake API? bener, endpoint, Panggonan ngendi kabeh panjalukan. Iki mbokmenawa http(s), ayo goleki "https: //":

Ing file AuthLinkManager.smali kita nemokake

.field OAUTH:Ljava/lang/String; = "https://habrahabr.ru/auth/o/%s/"
.field OAUTH_PARAMS:Ljava/lang/String; = "?client_id=%s&response_type=token&redirect_uri=%s"
.field OAUTH_REDIRECT_URL:Ljava/lang/String; = "http://cleverpumpkin.ru"

Iki kode kanggo mesin virtual Android (Dalvik VM), ora banget dingerteni kanggo manungsa, nanging isih cukup informatif. Telu konstanta iki, miturut isi lan jeneng, uga repositori GitHub, digunakake kanggo njaluk token akses nggunakake metode kasebut. GET.

Ayo katon luwih. File sing muncul sabanjure ing panelusuran yaiku NetworkModule.smali:

const-string v0, "https://habr.com/api/v1/"

Lan iki minangka papan kanggo panjaluk sampeyan!

Kanggo klien sing ditulis dhewe bisa mlaku kanthi bener, mung ana siji sing kudu dipikirake - client_id, sing paling mungkin minangka pengenal unik kanggo aplikasi kasebut.

Nanging, nggoleki teks iki ing kode sumber ora mimpin kanggo nemokake informasi sing cocog ...

Nanging dumadakan ing salah sawijining file mripatku kejiret sawetara garis sing menarik:

const-string p8, "log-tag"
invoke-static {p8, p2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

Iki, kaya sing sampeyan ngerteni, minangka entri log. Nanging ngrekam apa?

Bagian telu. Iki log!

Kita nggunakake adb logcat kanggo ndeleng log aplikasi.

(Un)aplikasi Habr resmi - HabrApp 2.0: entuk akses

Ora dinyana, log dadi luwih rinci tinimbang sing dikarepake.

Ing kene kita ora mung duwe apa sing dibutuhake client_idNanging token pangguna / aplikasi, lan mlebu ΠΈ sandi ing teks biasa!

Sawetara teori konspirasiAnane mung login lan sandhi ing log ora ngrusak apa-apa, amarga log kasebut mung bisa diwaca kanthi hak root utawa sambungan liwat adb. Nanging amarga kasunyatane ing antarane wong sing maca Habr ana pangembang Android sing bisa ngaktifake debugging, iki dadi masalah.

Ing kasus iki, "pangisian daya gratis" ing bandara bisa nyebabake nyolong akun, nanging sapa sing butuh?
Saka log iki kita bisa extract:

  • client_id ΠΈ apikeydibutuhake kanggo ngakses api;
  • URL wewenang pangguna (aneh, nanging ora ana apa-apa ing repositori babagan metode iki, bisa uga ora kasedhiya?)

Mangkono kedadeyane. Adhedhasar riset cilik iki, karya wis ditindakake ing proyek cilik - implementasine aplikasi seluler dhewe. Aku takon sing pengin bantuan kanggo nulis pesen, lan wong liya - kanggo milih (amarga aku pengin ngerti apa ana sing perlu iki).

Matur suwun!

Mung pangguna pangguna sing bisa melu survey. mlebunggih.

Apa sampeyan nggunakake aplikasi seluler Habr?

  • Ya, aku nggunakake, aku seneng

  • Ya, aku nggunakake, aplikasi kasebut nyebabake ora nyaman

  • Ora, aku nggunakake versi web ing telpon

  • Ora, aku nggunakake Habr saka komputerku

357 pangguna milih. 30 kedhaftar abstained.

Source: www.habr.com

Add a comment