Serlêdana Habr (ne)fermî - HabrApp 2.0: gihîştina gihîştinê

Êvarek bêhêz û jixwe pir bêzar, ez lê digerim fermî Serlêdana Habrê, careke din min tiliyên xwe xwar kir, yek ji bo her taybetmendiyek nexebitî. Li vir, bo nimûne, hûn nikanin şîrove bikin, li vir hûn ji mafê dengdanê bêpar in, û bi gelemperî, çima formula li ser ekranê nayên dîtin?

Serlêdana Habr (ne)fermî - HabrApp 2.0: gihîştina gihîştinê
Ev biryar bû: ji me re tiştek rehet, xweş, tiştek ji xwe re lazim bû. Serîlêdana we ya ji bo Habrê çi ye?
Bila ez çend dîmenan bidim we da ku hûn rewşê fam bikin.

Serlêdana Habr (ne)fermî - HabrApp 2.0: gihîştina gihîştinêTiştek weha xuya dike ew - ji. serîlêdana habr.com

Lîsteya "nerehetiyan"

  • Hûn nikarin weşanek ku rêjeya wê ji 0-yê cûda ye binirxînin
  • Her gav ne gengaz e ku meriv şîroveyek binivîse
  • Anket nexebitin
  • Formul di mijara tarî de nayên dîtin (reş li ser reş)
  • Hemî nîşanker peyda nabin

Erê, sepan ji Tebaxa sala borî ve nehatiye nûve kirin, lê dîsa jî xirab e. Bi gelemperî, pêdivî ye ku ew were sererast kirin.

Beşê yekê. Li gihîştinê digerin.

Pirsa Google ya Zû "habrahabr API" ew dibêje ku ew jixwe pir kevn bûye depo li ser Github, ji hingê ve nehatiye nûve kirin November 21 2016, û ev, ji bo bîskekê, du sal û nîv.

Ji ber vê rastiyê ku ev PHP e ji bîr nekin, li jêr bigerin û bixwînin:

Danîna Nasnameya Serlêdanê

Sûd digirin vê formê li ser Habrahabr, hûn hewce ne ku bi kurtasî cewhera serîlêdana nû û armanca ku jê re API-yek hewce dike diyar bikin.

Pirs tune, heke hûn hewce ne ku bigihîjin, wê hingê hûn hewce ne. Em nameyek (kurtkirî) dinivîsin:

Nameyek

Daxwazek heye ku ji bo Habr li ser bingeha PWA serîlêdanek çêbikin. Çend sedemên vê yekê hene. 

Ya yekem û ya herî eşkere: serîlêdana Android-ê hewcedariyên min ên kesane nagire.

Ya duyemîn: li ser her cûre tiştên ku bi gelemperî bi e-nameyê têne agahdarkirinên xwemalî têr nîn in (mînak, şîrove).

Sêyem: guhdana kesane (wek perspektîf) li ser kesên/humbûrên ku min eleqedar dikin, li gorî berjewendîyên min.

Bersiv, bê guman, ne pir xweş bû, lê bi kêmanî rastgo bû:

Mixabin, gihîştina API-ya me niha tune. Em plan dikin ku piştî ku em qedandina API-yê biqedînin, ji nû ve dest bi peydakirina gihîştinê bikin, lê hêj tarîxên me yên rast nînin, ji ber ku Em niha mijûlî çareserkirina karên din ên pêşîn in.

"Ok e, pirsgirêk nîne! Em ê tiştekî bînin!” - Min ji xwe re got û dest bi lêgerê kir.

Part du. Kolanên kûr.

Li ser bingeha mantiqê, heke serîlêdan dimeşîne, wê hingê ew gihîştina API-yê heye, û ew di serîlêdanê de tê girêdan. Werin em analîz bikin.

Ji ber ku em bi trafîkê re mijûl dibin, Wireshark bijartina me ye. Ne bê çend êş, ku têlefonê bi sermaseya sermaseyê ve bi Înternetê ve girêdide, em serîlêdanê vedikin û li daxwazan dinêrin:

Serlêdana Habr (ne)fermî - HabrApp 2.0: gihîştina gihîştinê
Diyar e ku tiştek ne diyar e

Erê, her tişt bi şîfre ye, lê ez naxwazim bi şîfrekirinê re tevlihev bikim. Hingê hûn hewce ne ku hûn li hundurê serîlêdanê bixwe binêrin.

Decompiled .apk, em dest bi lêgerînê bikin. API çi hewce dike? Rast, endpoint, cihê ku hemû daxwaz lê diçin. Dibe ku ev http(s) e, em hewl bidin ku "https://" bibînin:

Di pelê de AuthLinkManager.smali em dibînin

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

Ev koda makîneya virtual ya Android-ê ye (Dalvik VM), ji bo mirovan ne pir tê fêm kirin, lê dîsa jî pir agahdar e. Van her sê domdar, li gorî naverok û navê wan, û hem jî depoya GitHub-ê têne darizandin, ji bo daxwazkirina tokenek gihîştinê bi karanîna rêbazê têne bikar anîn. GET.

Ka em bêtir lê binêrin. Dosyaya ku di lêgerînê de paşê derdikeve ev e NetworkModule.smali:

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

Û li vir cihê ku hûn bi daxwazên xwe re biçin e!

Ji bo ku muwekîlê xwe-nivîsandî bi rêkûpêk bixebite, tenê tiştek maye ku meriv fêhm bike - client_id, ku bi îhtîmaleke mezin ji bo serîlêdanê nasnameyek yekta ye.

Lêbelê, lêgerîna vê nivîsê di koda çavkaniyê de nehişt ku agahdariya têkildar bibîne ...

Lê ji nişka ve di yek ji dosyayan de çavên min hin rêzikên balkêş ketin:

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

Ev, wekî ku hûn fêm dikin, navnîşek têketinê ye. Lê tomarkirina çi?

Beşa sêyem. Ev têketin in!

Em bikar tînin adb logcat ji bo dîtina têketinên serîlêdanê.

Serlêdana Habr (ne)fermî - HabrApp 2.0: gihîştina gihîştinê

Bi awayekî neçaverêkirî, têketin ji ya ku dihat hêvî kirin hîn berfirehtir derketin.

Li vir ne tenê tiştên ku em hewce ne hene client_idlê belê, token bikarhêner / sepan, û têketinê и şîfreya bi nivîsa sade!

Hin teoriyên komployêTenê hebûna têketinek û şîfreyek di têketinê de zirarê nade tiştekî, ji ber ku ev têketin tenê dikarin bi mafên root an bi pêwendiyek bi rê ve werin xwendin. adb. Lê ji ber ku di nav kesên ku Habr dixwînin de pêşdebirên Android-ê hene ku dibe ku debugging çalak be, ev dibe pirsgirêk.

Di vê rewşê de, "dravdana belaş" li balafirgehê dibe ku bibe sedema dizîna hesabê, lê kê hewce dike?
Ji van qeydan em dikarin derxin:

  • client_id и apikeypêdivî ye ku bigihîjin api;
  • URL destûrnameya bikarhêner (ecêb, lê di depoyê de li ser vê rêbazê tiştek tune, dibe ku ew neyê peyda kirin?)

Wisa bû. Li ser bingeha vê lêkolîna piçûk, kar jixwe li ser projeyek piçûk dimeşe - pêkanîna me ya serîlêdana mobîl. Ez ji kesên ku dixwazin alîkariyê bikin ji bo nivîsandina peyamekê, û ji her kesê din dipirsim - deng bidin (ji ber ku ez dixwazim fam bikim ka kesek hewceyê vê yekê ye).

Ji bo baldariya te spas!

Tenê bikarhênerên qeydkirî dikarin beşdarî anketê bibin. Têketinji kerema xwe.

Ma hûn serîlêdana mobîl Habr bikar tînin?

  • Erê, ez wê bikar tînim, ez pê kêfxweş im

  • Erê, ez wê bikar tînim, serîlêdan dibe sedema nerehetiyê

  • Na, ez guhertoya webê li ser têlefona xwe bikar tînim

  • Na, ez Habrê ji komputera xwe bikar tînim

357 bikarhêneran deng dan. 30 bikarhêner jî betal bûn.

Source: www.habr.com

Add a comment