(Un) palapala Habr mana - HabrApp 2.0: loaʻa ke komo
Hoʻokahi ahiahi ʻoluʻolu a hauʻoli loa, ʻo wau, e hele ana luna ʻO ka noi Habr, ua kukuli hou au i koʻu mau manamana lima, hoʻokahi no kēlā me kēia hiʻohiʻona hana ʻole. Eia, no ka laʻana, ʻaʻole hiki iā ʻoe ke ʻōlelo, ma ʻaneʻi ua hōʻole ʻia ʻoe i ke kuleana e koho balota, a ma ke ʻano nui, no ke aha i ʻike ʻole ʻia ai nā ʻōkuhi ma ka pale?
Ua hoʻoholo ʻia: makemake mākou i kahi mea ʻoluʻolu, ʻoluʻolu, kahi mea no mākou iho. Pehea kāu noi ponoʻī no Habr?
E hāʻawi wau iā ʻoe i kekahi mau screenshots e hoʻomaopopo i ke kūlana.
He mea like me keia ia - o. habr.com palapala noi
Ka papa inoa o nā "pilikia"
ʻAʻole hiki iā ʻoe ke helu i kahi paʻi i ʻokoʻa ka helu mai ka 0
ʻAʻole hiki ke kākau ʻōlelo i nā manawa a pau
ʻAʻole hana nā koho balota
ʻAʻole ʻike ʻia nā ʻōkuhi ma ke kumumanaʻo ʻeleʻele (ʻeleʻele ma ka ʻeleʻele)
ʻAʻole loaʻa nā bookmark a pau
ʻAe, ʻaʻole i hōʻano hou ʻia ka app mai ʻAukake i ka makahiki i hala, akā maikaʻi ʻole. Ma keʻano laulā, pono e hoʻopaʻa.
Mahele ʻekahi. Ke ʻimi nei i ke komo.
Huli Google wikiwiki "API habrahabr" ʻōlelo ʻia ua kahiko loa ia waihona waihona ma Github, ʻaʻole i hōʻano hou ʻia mai November 21 2016, a ʻo kēia, no kekahi manawa, elua makahiki a me ka hapa.
Ke nānā ʻole nei i ka ʻoiaʻiʻo ʻo PHP kēia, e kaomi i lalo a heluhelu:
Loaʻa i ka ID noi
ʻO ka hoʻohana pono ʻana keia palapala ma Habrahabr, pono ʻoe e wehewehe pōkole i ke ʻano o ka noi hou a me ke kumu e pono ai ia i kahi API.
ʻAʻohe nīnau, inā pono ʻoe e loaʻa ke komo, a laila pono ʻoe. Kākau mākou i kahi leka (pōkole):
Ke kākauʻana
Aia ka makemake e hana i kahi noi no Habr e pili ana i ka PWA. Nui nā kumu no kēia.
ʻO ka mea mua a maopopo loa: ʻaʻole i hoʻokō ka noi Android i kaʻu mau koi pilikino.
ʻO ka lua: ʻaʻole lawa nā hoʻolaha ʻōiwi e pili ana i nā ʻano mea āpau e hele mai ma ka leka uila (nā manaʻo, no ka laʻana).
ʻO ke kolu: nā hoʻoheheʻe pilikino (ma ke ʻano he hiʻohiʻona) i nā poʻe/hus hoihoi iaʻu, e noʻonoʻo ana i kaʻu mau makemake.
ʻO ka pane, ʻoiaʻiʻo, ʻaʻole i ʻoluʻolu loa, akā ma ka liʻiliʻi loa.
ʻO ka mea pōʻino, ʻaʻole hiki ke komo i kā mākou API i kēia manawa. Hoʻolālā mākou e hoʻomaka hou i ka hāʻawi ʻana ma hope o ka hoʻopau ʻana i ka API, akā ʻaʻohe o mākou mau lā kikoʻī, no ka mea Ke paʻahana nei mākou i ka hoʻoponopono ʻana i nā hana koʻikoʻi ʻē aʻe.
“ʻAe, ʻaʻohe pilikia! E hana mākou i kekahi mea!" - Ua'ōlelo wau iaʻu iho a hoʻomaka e nānā.
Mahele ʻelua. ʻEli hohonu.
Ma muli o ka loiloi, inā e holo ana ka noi, a laila hiki iā ia ke komo i ka API, a ua paʻa i ka noi. E kālailai kākou.
No ka mea e pili ana mākou i nā kaʻa, ʻo Wireshark kā mākou koho. ʻAʻole me ka ʻeha, ke hoʻopili ʻana i ke kelepona i ka Pūnaewele ma o kahi kamepiula papa, wehe mākou i ka noi a nānā i nā noi:
Akaka aole maopopo
ʻAe, ua hoʻopiliʻia nā mea a pau, akā,ʻaʻole au makemake e hana me ka cryptography. A laila pono ʻoe e nānā i loko o ka noi ponoʻī.
Hoʻopili ʻia .apk, e hoʻomaka kākou e nānā. He aha ka mea e pono ai kekahi API? Akau, hopena kūlike, kahi e hele ai nā noi a pau. ʻO kēia paha ka http(s), e hoʻāʻo kākou e ʻimi iā "https://":
ʻO kēia ke code no ka mīkini virtual Android (ʻO Dalvik VM), ʻaʻole maopopo loa i nā kānaka, akā naʻe naʻe i ka ʻike. Hoʻohana ʻia kēia mau mea ʻekolu, e hoʻoholo ana i kā lākou ʻike a me ko lākou inoa, a me ka waihona GitHub, e noi i kahi hōʻailona komo e hoʻohana ana i ke ʻano. GET.
E nana hou aku kakou. ʻO ka faila e hiki mai ana ma ka huli ʻana NetworkModule.smali:
const-string v0, "https://habr.com/api/v1/"
A eia kahi e hele ai me kāu mau noi!
No ka hana pono ʻana o ka mea kūʻai aku iā ia iho, hoʻokahi wale nō mea i koe e noʻonoʻo ai - client_id, ʻo ia paha kahi ʻike kūʻokoʻa no ka noi.
Eia naʻe, ʻaʻole i alakaʻi ka ʻimi ʻana i kēia kikokikona ma ke code kumu i ka loaʻa ʻana o ka ʻike pili...
Akā, i loko o kekahi o nā faila ua loaʻa i koʻu mau maka kekahi mau laina hoihoi:
ʻO kēia, e like me kāu e hoʻomaopopo ai, he log log. Akā, e hoʻopaʻa ana i ke aha?
Mahele ʻekolu. ʻO kēia nā lāʻau!
Hoʻohana mākou adb logcat e nānā i nā palapala noi.
Me ka manaʻo ʻole, ua ʻoi aku ka nui o nā kikoʻī ma mua o ka mea i manaʻo ʻia.
Ma ʻaneʻi ʻaʻole i loaʻa iā mākou ka mea e pono ai client_idaka, hōʻailona mea hoʻohana / noi, a ʻike и hua'ōlelo ma ka kikokikona maopopo!
ʻO kekahi mau manaʻo kipiʻO ka loaʻa wale ʻana o ka inoa inoa a me ka ʻōlelo huna i loko o nā lāʻau ʻaʻole e pōʻino i kekahi mea, no ka mea hiki ke heluhelu ʻia kēia mau lāʻau me nā kuleana kumu a i ʻole kahi pilina ma o adb. Akā ma muli o ka ʻoiaʻiʻo i waena o ka poʻe e heluhelu ana iā Habr aia nā mea hoʻomohala Android i hiki ke hoʻohana i ka debugging, lilo kēia i pilikia.
I kēia hihia, hiki i ka "hoʻolimalima manuahi" ma ke kahua mokulele ke hopena i ka ʻaihue moʻokāki, akā ʻo wai ka mea e pono ai?
Mai kēia mau logs hiki iā mākou ke unuhi:
client_id и apikeypono e komo api;
URL ʻae ʻia e ka mea hoʻohana (he mea ʻē, akā ʻaʻohe mea i loko o ka waihona e pili ana i kēia ʻano, ʻaʻole paha i hāʻawi ʻia?)
Pēlā i hana ai. Ma muli o kēia noiʻi liʻiliʻi, ke hoʻomaka nei ka hana ma kahi papahana liʻiliʻi - kā mākou hoʻokō ponoʻī i kahi noi kelepona. Ke noi aku nei au i ka poʻe makemake e kōkua e kākau i kahi leka, a me nā mea ʻē aʻe - e koho balota (no ka mea makemake wau e hoʻomaopopo inā makemake kekahi i kēia).
Nā mea hou aku!
Hiki i nā mea hoʻohana i hoʻopaʻa inoa ʻia ke komo i ka noiʻi. Eʻe, e 'oluʻolu.
Ke hoʻohana nei ʻoe i ka polokalamu kelepona ʻo Habr?
ʻAe, hoʻohana wau ia, hauʻoli wau me ia
ʻAe, ke hoʻohana nei au iā ia, ke kumu o ka pilikia
ʻAʻole, hoʻohana wau i ka mana pūnaewele ma kaʻu kelepona
ʻAʻole, hoʻohana wau iā Habr mai kaʻu kamepiula
357 mea hoʻohana i koho. Ua hōʻole nā mea hoʻohana 30.