Habr aplikazio (ez) ofiziala - HabrApp 2.0: sarbidea lortzea
Arratsalde latz eta jada nahiko aspergarria, ni, hostoa egiten ofiziala Habr aplikazioa, berriro ere behatzak tolestu ditut, funtzionatzen ez duen funtzio bakoitzeko bat. Hemen, adibidez, ezin duzu komentatu, hemen botoa emateko eskubidea ukatzen zaizu eta, oro har, zergatik ez dira formulak pantailan ikusten?
Erabakia zegoen: zerbait erosoa, atsegina, gurea behar genuen. Zer gertatzen da Habr-erako zure aplikazioarekin?
Pantaila-argazki batzuk ematen dizkizut egoera ulertzeko.
Honelako zerbait dirudi honetan --ren. habr.com aplikazioa
"eragozpenen" zerrenda
Ezin duzu baloratu 0tik desberdina den argitalpen bat
Ez da beti posible iruzkin bat idaztea
Inkestek ez dute funtzionatzen
Formulak ez dira ikusten gai ilunean (beltza beltzean)
Laster-marka guztiak ez daude erabilgarri
Bai, aplikazioa ez da iazko abuztutik eguneratu, baina oraindik txarto dago. Oro har, konpondu egin behar da.
Lehen zatia. Sarbide bila.
Google-ren kontsulta azkarra "habrahabr API" dagoeneko nahiko zaharkitua dagoela dio biltegia Github-en, geroztik eguneratu gabe Azaroan 21 2016, eta hau, une batez, bi urte eta erdi.
Hau PHP dela alde batera utzita, joan behera eta irakurri:
Aplikazioaren IDa lortzea
Aprobetxatuz forma hau Habrahabr-en, aplikazio berriaren funtsa eta API bat behar duen helburua labur deskribatu behar dituzu.
Ez dago zalantzarik, sarbidea lortu behar baduzu, behar duzu. Gutun bat idazten dugu (laburtua):
Gutun bat
PWAn oinarritutako Habr-erako eskaera bat egiteko gogoa dago. Hainbat arrazoi daude horretarako.
Lehenengoa eta nabarmenena: Android aplikazioak ez ditu nire baldintza pertsonalak betetzen.
Bigarrena: ez dago posta elektronikoz etortzen diren mota guztietako jakinarazpen natibo nahikorik (iruzkinak, adibidez).
Erantzuna, noski, ez zen oso atsegina izan, baina zintzoa behintzat:
Zoritxarrez, gure APIrako sarbidea ez dago eskuragarri une honetan. APIa amaitzen amaitu ondoren sarbidea ematen berriro hasteko asmoa dugu, baina oraindik ez dugu data zehatzik, izan ere Une honetan lehentasunezko beste zeregin batzuk konpontzen lanpetuta gaude.
βOngi da, ez dago arazorik! Zerbait asmatuko dugu!" - Esan nion neure buruari eta bilatzen hasi nintzen.
Bigarren zatia. Indusketa sakonak.
Logikaren arabera, aplikazioa exekutatzen ari bada, orduan APIrako sarbidea du, eta aplikazioan kablekatuta dago. Azter dezagun.
Trafikoarekin ari garenez, Wireshark da gure aukera. Ez minak gabe, telefonoa mahaigaineko ordenagailu baten bidez Internetera konektatu ondoren, aplikazioa ireki eta eskaerak aztertuko ditugu:
Argi dago ezer ez dagoela argi
Bai, dena enkriptatuta dago, baina ez dut kriptografiarekin nahastu nahi. Ondoren, aplikazioaren barruan begiratu behar duzu.
Deskonpilatua APK, has gaitezen bilatzen. Zer behar du edozein API? Ondo, amaierako puntua, eskaera guztiak joaten diren lekua. Hau http(k) izango da ziurrenik, saia gaitezen "https://" aurkitzen:
Hau da Android makina birtualaren kodea (Dalvik VM), ez da oso ulergarria gizakientzat, baina oraindik nahiko informatzailea. Hiru konstante hauek, edukia eta izena kontuan hartuta, baita GitHub biltegia ere, metodoa erabiliz sarbide-token bat eskatzeko erabiltzen dira. GET.
Ikus dezagun gehiago. Bilaketan hurrengoan agertzen den fitxategia da NetworkModule.smali:
const-string v0, "https://habr.com/api/v1/"
Eta hona hemen zure eskaerak egiteko lekua!
Norberak idatzitako bezeroak behar bezala funtziona dezan, gauza bakarra geratzen da asmatzeko - client_id, hau da, ziurrenik, aplikazioaren identifikatzaile bakarra.
Hala ere, testu hori iturburu-kodean bilatu izanak ez zuen informazio garrantzitsua aurkitzea ekarri...
Baina bat-batean fitxategietako batean nire begiek lerro interesgarri batzuk harrapatu zituzten:
Hau, ulertu dezakezun bezala, erregistroko sarrera bat da. Baina zer grabatzen?
Hirugarren zatia. Hauek dira erregistroak!
Erabiltzen dugu adb logcat aplikazioen erregistroak ikusteko.
Ustekabean, erregistroak espero baino are zehatzagoak izan ziren.
Hemen ez dugu behar duguna bakarrik client_idBaina token erabiltzailea/aplikazioa, eta saioa hasi ΠΈ pasahitza testu arruntean!
Konspirazio teoria batzukErregistroetan saio-hasiera eta pasahitza egoteak ez du ezer kaltetzen, erregistro hauek root eskubideekin edo konexio baten bidez soilik irakur daitezkeelako. adb. Baina Habr irakurtzen duten pertsonen artean arazketa gaituta izan dezaketen Android garatzaileak daudelako, hau arazo bihurtzen da.
Kasu honetan, aireportuan "doako kargatzeak" kontu lapurreta eragin dezake, baina nork behar du?
Erregistro hauetatik atera dezakegu:
client_id ΠΈ apikeysartzeko beharrezkoak api;
Erabiltzaileen baimenaren URLa (bitxia, baina ez dago metodo honi buruzko biltegian ezer, agian ez da ematen?)
Horrela gertatu zen. Ikerketa txiki honetatik abiatuta, proiektu txiki batean lanean ari dira dagoeneko: gure aplikazio mugikor baten inplementazioa. Lagundu nahi dutenei mezu bat idazteko eta beste guztiei eskatzen diet botoa emateko (norbaitek behar duen ala ez ulertu nahi dudalako).
Eskerrik asko zure arreta!
Erregistratutako erabiltzaileek soilik parte hartu dezakete inkestan. Hasi saioa, mesedez.
Habr mugikorreko aplikazioa erabiltzen al duzu?
Bai, erabiltzen dut, pozik nago
Bai, erabiltzen dut, aplikazioak eragozpenak sortzen ditu
Ez, telefonoan web bertsioa erabiltzen dut
Ez, Habr erabiltzen dut nire ordenagailutik
357 erabiltzailek eman dute botoa. 30 erabiltzaile abstenitu ziren.