(Un) offisjele Habr-applikaasje - HabrApp 2.0: tagong krije
Ien lompe en al aardich saaie jûn, blêdde ik troch offisjeel Habr applikaasje, nochris ik bûgde myn fingers, ien foar elke net-wurkjende funksje. Hjir kinne jo bygelyks gjin kommentaar jaan, hjir wurde jo it stimrjocht wegere, en yn 't algemien, wêrom binne de formules net sichtber op it skerm?
Der waard besletten: wy hiene wat nofliks, nofliks, wat eigens nedich. Hoe sit it mei jo eigen applikaasje foar Habr?
Lit my jo in pear skermôfbyldings jaan om de situaasje te begripen.
It sjocht der sa út it - fan. habr.com applikaasje
List fan "ûngemak"
Jo kinne gjin publikaasje beoardielje wêrfan de wurdearring oars is as 0
It is net altyd mooglik om in reaksje te skriuwen
Polls wurkje net
Formules binne net sichtber yn tsjuster tema (swart op swart)
Net alle blêdwizers binne beskikber
Ja, de app is sûnt augustus ferline jier net bywurke, mar it is noch altyd min. Yn 't algemien moat it reparearre wurde.
Diel ien. Op syk nei tagong.
Fluch Google Query "habrahabr API" it seit dat it al aardich ferâldere is repository op Github, net bywurke sûnt November 21 2016, en dit, foar in momint, twa en in heal jier.
Negearje it feit dat dit PHP is, rôlje nei ûnderen en lês:
It krijen fan de applikaasje ID
Profitearje fan dizze foarm op Habrahabr moatte jo de essinsje fan 'e nije applikaasje koart beskriuwe en it doel dêr't it in API foar nedich is.
D'r is gjin fraach, as jo tagong moatte krije, dan hawwe jo it nedich. Wy skriuwe in brief (ôfkoarte):
In brief
Der is in winsk om in oanfraach te meitsjen foar Habr basearre op PWA. D'r binne ferskate redenen foar dit.
De earste en meast foar de hân lizzende: de Android-applikaasje foldocht net oan myn persoanlike easken.
Twad: der binne net genôch native notifikaasjes oer allerhanne saken dy't meastentiids per e-mail komme (bygelyks opmerkings).
Tredde: persoanlike digests (as perspektyf) oer minsken/hubs dy't my ynteressearje, rekken hâldend mei myn ynteresses.
It antwurd wie fansels net sa noflik, mar teminsten earlik:
Spitigernôch is tagong ta ús API op it stuit net beskikber. Wy binne fan plan om wer tagong te jaan nei't wy klear binne mei it finalisearjen fan de API, mar wy hawwe noch gjin krekte datums, om't wy Wy binne op it stuit drok dwaande mei it oplossen fan oare prioriteitstaken.
"Ok gjin probleem! Wy komme mei wat!" - sei ik tsjin mysels en begûn te sykjen.
Diel twa. Djippe opgravings.
Op grûn fan 'e logika, as de applikaasje rint, dan hat it tagong ta de API, en it is hardwired yn' e applikaasje. Lit ús analysearje.
Sûnt wy te krijen hawwe mei ferkear, is Wireshark ús kar. Net sûnder wat pine, nei't wy de tillefoan ferbûn hawwe mei it ynternet fia in buroblêd komputer, iepenje wy de applikaasje en sjogge nei de oanfragen:
It is dúdlik dat neat dúdlik is
Ja, alles is fersifere, mar ik wol net rommelje mei kryptografy. Dan moatte jo yn 'e applikaasje sels sjen.
Dekompilearre .apk, lit ús begjinne te sykjen. Wat hat elke API nedich? Rjochts, einpunt, it plak dêr't alle oanfragen gean. Dit is wierskynlik http(s), litte wy besykje "https://" te finen:
Dit is de koade foar de Android firtuele masine (Dalvik VM), net hiel begryplik foar minsken, mar dochs frij ynformatyf. Dizze trije konstanten, beoardielje op har ynhâld en namme, lykas it GitHub-repository, wurde brûkt om in tagongstoken oan te freegjen mei de metoade GET.
Lit ús fierder sjen. De triem dy't neist komt yn it sykjen is NetworkModule.smali:
const-string v0, "https://habr.com/api/v1/"
En hjir is it plak om te gean mei jo oanfragen!
Foar de selsskreaune klant om goed te wurkjen, is d'r mar ien ding oer om út te finen - client_id, dat is nei alle gedachten in unike identifier foar de applikaasje.
It sykjen nei dizze tekst yn 'e boarnekoade hat lykwols net liede ta it finen fan relevante ynformaasje ...
Mar ynienen fûnen myn eagen yn ien fan 'e bestannen wat nijsgjirrige rigels:
Dit, sa't jo kinne begripe, is in log-yngong. Mar wat opnimme?
Diel trije. Dit binne de logs!
Wy brûke adb logcat om applikaasjelogboeken te besjen.
Unferwachts bliken de logboeken noch mear detaillearre te wêzen as ferwachte.
Hjir hawwe wy net allinich wat wy nedich binne client_idmar token brûker / applikaasje, en login и wachtwurd yn dúdlike tekst!
Guon gearspanningsteoryenDe gewoane oanwêzigens fan in oanmelding en wachtwurd yn 'e logs docht neat skea, om't dizze logs allinich kinne wurde lêzen mei beide rootrjochten of in ferbining fia adb. Mar troch it feit dat ûnder de minsken dy't Habr lêze d'r Android-ûntwikkelders binne dy't debuggen mooglik hawwe ynskeakele, wurdt dit in probleem.
Yn dit gefal kin "fergees opladen" op it fleanfjild resultearje yn accountstellerij, mar wa hat it nedich?
Ut dizze logs kinne wy ekstrahearje:
client_id и apikeynedich om tagong te krijen api;
Brûkersautorisaasje-URL (raar, mar d'r is neat yn 'e repository oer dizze metoade, miskien is it net levere?)
Sa barde it. Op grûn fan dit lytse ûndersyk wurdt al wurke oan in lyts projekt - ús eigen ymplemintaasje fan in mobile applikaasje. Ik freegje dejingen dy't helpe wolle om in berjocht te skriuwen, en alle oaren - om te stimmen (om't ik wol begripe oft immen dit nedich hat).
Спасибо за внимание!
Allinnich registrearre brûkers kinne meidwaan oan 'e enkête. Ynlogge, asjebleaft.
Brûk jo de Habr mobile applikaasje?
Ja, ik brûk it, ik bin der bliid mei
Ja, ik brûk it, de applikaasje feroarsaket ûngemak