(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?

(Un) offisjele Habr-applikaasje - HabrApp 2.0: tagong krije
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.

(Un) offisjele Habr-applikaasje - HabrApp 2.0: tagong krijeIt 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:

(Un) offisjele Habr-applikaasje - HabrApp 2.0: tagong krije
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:

Yn triem AuthLinkManager.smali Wy fine

.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"

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:

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

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.

(Un) offisjele Habr-applikaasje - HabrApp 2.0: tagong krije

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

  • Nee, ik brûk de webferzje op myn tillefoan

  • Nee, ik brûk Habr fan myn kompjûter

357 brûkers stimden. 30 brûkers ûntholden har.

Boarne: www.habr.com

Add a comment