(Un)aplikasyon ofisyèl Habr - HabrApp 2.0: jwenn aksè

Yon aswè langwid ak deja byen raz, mwen, fèy nan ofisyèl Habr aplikasyon, yon lòt fwa ankò mwen bese dwèt mwen, youn pou chak karakteristik ki pa travay. Isit la, pou egzanp, ou pa ka fè kòmantè, isit la yo refize w dwa pou vote, ak an jeneral, poukisa fòmil yo pa vizib sou ekran an?

(Un)aplikasyon ofisyèl Habr - HabrApp 2.0: jwenn aksè
Li te deside: nou bezwen yon bagay konfòtab, bèl, yon bagay pwòp pa nou. E pwòp aplikasyon ou pou Habr?
Kite m ba w kèk Ekran pou w konprann sitiyasyon an.

(Un)aplikasyon ofisyèl Habr - HabrApp 2.0: jwenn aksèSanble yon bagay tankou sa a sa a - nan. aplikasyon habr.com

Lis "enkonvenyan"

  • Ou pa kapab evalye yon piblikasyon ki gen evalyasyon diferan de 0
  • Li pa toujou posib pou ekri yon kòmantè
  • Biwo vòt yo pa mache
  • Fòmil yo pa vizib nan tèm nwa (nwa sou nwa)
  • Se pa tout Bookmarks ki disponib

Wi, aplikasyon an pa te mete ajou depi mwa Out ane pase a, men li toujou move. An jeneral, li bezwen yo dwe fiks.

Premye pati. Kap chèche aksè.

Quick Google Query "habrahabr API" li di li deja byen demode depo sou Github, pa mete ajou depi Novanm 21 2016, ak sa a, pou yon moman, de ane edmi.

Inyore lefèt ke sa a se PHP, desann epi li:

Jwenn ID aplikasyon an

Pran avantaj de fòm sa a sou Habrahabr, ou bezwen dekri yon ti tan sans nouvo aplikasyon an ak objektif li bezwen yon API.

Pa gen okenn kesyon, si ou bezwen jwenn aksè, Lè sa a, ou bezwen li. Nou ekri yon lèt (abreje):

Yon lèt

Gen yon dezi pou fè yon aplikasyon pou Habr ki baze sou PWA. Gen plizyè rezon pou sa. 

Premye a ak pi evidan: aplikasyon an android pa satisfè kondisyon pèsonèl mwen.

Dezyèmman: pa gen ase notifikasyon natif natal sou tout kalite bagay ki anjeneral vini pa imel (kòmantè, pou egzanp).

Twazyèm: dijere pèsonèl (tankou yon pèspektiv) sou moun / sant ki enterese m, pran an kont enterè mwen.

Repons lan, nan kou, pa t 'trè bèl, men omwen onèt:

Malerezman, aksè a API nou an pa disponib kounye a. Nou planifye rekòmanse bay aksè apre nou fini finalize API a, men nou poko gen okenn dat egzak, paske Kounye a nou okipe rezoud lòt travay priyorite.

"Oke, pa gen pwoblèm! Nou pral vini ak yon bagay!" - Mwen te di tèt mwen epi mwen te kòmanse chèche.

Pati de. Fouyman gwo twou san fon.

Dapre lojik la, si aplikasyon an ap kouri, Lè sa a, li gen aksè a API a, epi li se branche nan aplikasyon an. Ann analize.

Depi nou ap fè fas ak trafik, Wireshark se chwa nou an. Pa san kèk doulè, nou te konekte telefòn nan ak entènèt la atravè yon òdinatè Desktop, nou louvri aplikasyon an epi gade demann yo:

(Un)aplikasyon ofisyèl Habr - HabrApp 2.0: jwenn aksè
Li klè ke pa gen anyen ki klè

Wi, tout bagay ankode, men mwen pa vle dezòd ak kriptografik. Lè sa a, ou bezwen gade andedan aplikasyon an tèt li.

Dekonpile apk, ann kòmanse gade. Kisa nenpòt API bezwen? Dwa, pwen final, kote tout demann ale. Sa a se pwobableman http (yo), ann eseye jwenn "https://":

Nan dosye AuthLinkManager.smali nou jwenn

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

Sa a se kòd pou machin vityèl Android (Dalvik VM), pa trè konprann pou moun, men yo toujou byen enfòmatif. Twa konstan sa yo, jije pa kontni yo ak non yo, osi byen ke depo GitHub la, yo itilize pou mande yon siy aksè lè l sèvi avèk metòd la. GET.

Ann gade pi lwen. Fichye a ki vini pwochen nan rechèch la se NetworkModule.smali:

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

Ak isit la se kote pou ale ak demann ou yo!

Pou kliyan ki ekri pwòp tèt ou a travay byen, gen yon sèl bagay ki rete pou kalkile - client_id, ki gen plis chans yon idantifyan inik pou aplikasyon an.

Sepandan, rechèch tèks sa a nan kòd sous la pa te mennen nan jwenn enfòmasyon ki enpòtan...

Men, toudenkou nan youn nan dosye yo je m 'pran kèk liy enteresan:

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

Sa a, jan ou ka konprann, se yon antre nan boutèy demi lit. Men, anrejistreman kisa?

Twazyèm pati. Sa yo se mòso bwa yo!

Nou itilize adb logcat pou wè jounal aplikasyon yo.

(Un)aplikasyon ofisyèl Habr - HabrApp 2.0: jwenn aksè

San atann, mòso bwa yo te tounen menm plis detay pase espere.

Isit la nou pa gen sèlman sa nou bezwen client_idMen, siy itilizatè/aplikasyon, ak ouvri sesyon an и modpas nan tèks klè!

Gen kèk teyori konploSèlman prezans yon login ak modpas nan mòso bwa yo pa fè anyen mal, paske mòso bwa sa yo ka sèlman li ak dwa rasin oswa yon koneksyon atravè. adb. Men, akòz lefèt ke nan mitan moun yo li Habr gen devlopè android ki ka gen debogaj pèmèt, sa a vin tounen yon pwoblèm.

Nan ka sa a, "chaj gratis" nan ayewopò an ka lakòz vòlè kont, men ki moun ki bezwen li?
Soti nan mòso bwa sa yo nou ka ekstrè:

  • client_id и apikeyoblije gen aksè api;
  • URL otorizasyon itilizatè (etranj, men pa gen anyen nan depo a sou metòd sa a, petèt li pa bay?)

Se konsa sa te pase. Dapre ti rechèch sa a, travay la deja sou yon ti pwojè - pwòp aplikasyon pa nou pou yon aplikasyon mobil. Mwen mande moun ki vle ede yo ekri yon mesaj, ak tout lòt moun - pou yo vote (paske mwen vle konprann si yon moun bezwen sa).

Mèsi pou atansyon ou!

Se sèlman itilizatè ki anrejistre ki ka patisipe nan sondaj la. Enskri, tanpri.

Èske w itilize aplikasyon mobil Habr la?

  • Wi, mwen sèvi ak li, mwen kontan ak li

  • Wi, mwen sèvi ak li, aplikasyon an lakòz deranjman

  • Non, mwen itilize vèsyon entènèt la sou telefòn mwen an

  • Non, mwen itilize Habr sou òdinatè mwen an

357 itilizatè yo te vote. 30 itilizatè te absteni.

Sous: www.habr.com

Add nouvo kòmantè