๋๋ฅธํ๊ณ ๋ฒ์จ ๊ฝค ์ง๋ฃจํ ์ด๋ ์ ๋ , ๋๋ ๋๋ญ์์ ํค์ณ๋๊ฐ๊ณ ์๋ค ๊ด๋ฆฌ Habr ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ค์ ํ ๋ฒ ์๋ํ์ง ์๋ ๊ธฐ๋ฅ๋ง๋ค ํ๋์ฉ ์๊ฐ๋ฝ์ ๊ตฌ๋ถ๋ ธ์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ๊ธฐ์๋ ๋๊ธ์ ๋ฌ ์ ์๊ณ ํฌํ๊ถ์ด ๊ฑฐ๋ถ๋๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ์์์ด ํ๋ฉด์ ํ์๋์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๊ฒฐ์ ๋์์ต๋๋ค. ์ฐ๋ฆฌ์๊ฒ๋ ํธ์ํ๊ณ ์ฆ๊ฑฐ์ด ๊ฒ, ์ฐ๋ฆฌ๋ง์ ๊ฒ์ด ํ์ํ์ต๋๋ค. Habr์ ๋ํ ๊ทํ์ ์ ์ฒญ์๋ ์ด๋ป์ต๋๊น?
์ํฉ์ ์ดํดํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ์คํฌ๋ฆฐ์ท์ ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ด์ฉ์ง ์ด๋ ๊ฒ ์๊ฒผ์ด ๊ทธ๊ฒ - ์. habr.com ์ ํ๋ฆฌ์ผ์ด์
"๋ถํธํ ์ " ๋ชฉ๋ก
- ๋ฑ๊ธ์ด 0์ด ์๋ ์ถํ๋ฌผ์ ๋ฑ๊ธ์ ๋งค๊ธธ ์ ์์ต๋๋ค.
- ๋๊ธ์ ์ฐ๋ ๊ฒ์ด ํญ์ ๊ฐ๋ฅํ ๊ฒ์ ์๋๋๋ค.
- ์ฌ๋ก ์กฐ์ฌ๊ฐ ์๋ํ์ง ์์ต๋๋ค
- ์ด๋์ด ํ ๋ง์์๋ ์์์ด ํ์๋์ง ์์ต๋๋ค(๊ฒ์์ ๋ฐํ์ ๊ฒ์์).
- ์ผ๋ถ ๋ถ๋งํฌ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ค, ์๋ XNUMX์ ์ดํ๋ก ์ฑ ์ ๋ฐ์ดํธ๊ฐ ์๋๋๋ฐ ์ฌ์ ํ ์ํ๊ฐ ์์ข๋ค์. ์ผ๋ฐ์ ์ผ๋ก ์์ ์ด ํ์ํฉ๋๋ค.
XNUMX๋ถ. ์ก์ธ์ค๋ฅผ ์ฐพ๊ณ ์์ต๋๋ค.
๋น ๋ฅธ Google ์ฟผ๋ฆฌ "ํ๋ธ๋ผํ๋ธ๋ฅด API" ์ด๋ฏธ ๊ฝค ๊ตฌ์์ด๋ผ๊ณ ํ๋ค์
์ด๊ฒ์ด PHP๋ผ๋ ์ฌ์ค์ ๋ฌด์ํ๊ณ ์๋๋ก ์คํฌ๋กคํ์ฌ ๋ค์์ ์ฝ์ผ์ญ์์ค.
์ ํ๋ฆฌ์ผ์ด์ ID ๊ฐ์ ธ์ค๊ธฐ
ํ์ฉ
์ด ์์ Habrahabr์์๋ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณธ์ง๊ณผ API๊ฐ ํ์ํ ๋ชฉ์ ์ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํด์ผ ํฉ๋๋ค.
์ก์ธ์ค ๊ถํ์ด ํ์ํ๋ค๋ฉด ์์ฌ์ ์ฌ์ง๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ํธ์ง๋ฅผ ์๋๋ค (์ถ์ฝ):
ํธ์ง
PWA๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Habr์ ๋ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ณ ์ถ์ ์๊ตฌ๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ช ๊ฐ์ง ์ด์ ๊ฐ ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ์ด์ ๊ฐ์ฅ ๋ถ๋ช ํ ์ ์ Android ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ด ๊ฐ์ธ์ ์ธ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค.
๋์งธ: ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฉ์ผ๋ก ์ ๋ฌ๋๋ ๋ชจ๋ ์ข ๋ฅ์ ํญ๋ชฉ(์: ๋๊ธ)์ ๋ํ ๊ธฐ๋ณธ ์๋ฆผ์ด ์ถฉ๋ถํ์ง ์์ต๋๋ค.
์ ์งธ: ๋ด ๊ด์ฌ์ฌ๋ฅผ ๊ณ ๋ คํ์ฌ ๊ด์ฌ ์๋ ์ฌ๋/ํ๋ธ์ ๋ํ ๊ฐ์ธ์ ์ธ ์์ฝ(๊ด์ )์ ๋๋ค.
๋ฌผ๋ก ๋๋ต์ ๊ทธ๋ค์ง ์ ์พํ์ง๋ ์์์ง๋ง ์ ์ด๋ ์ ์งํ์ต๋๋ค.
์ํ๊น๊ฒ๋ ํ์ฌ API์ ์ก์ธ์คํ ์ ์์ต๋๋ค. API ์์ฑ ํ ์ก์ธ์ค ์ ๊ณต์ ์ฌ๊ฐํ ๊ณํ์ด์ง๋ง ์์ง ์ ํํ ๋ ์ง๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ํ์ฌ ๋ค๋ฅธ ์ฐ์ ์์ ์์ ์ ํด๊ฒฐํ๋๋ผ ๋ฐ์ฉ๋๋ค.
"๊ทธ๋, ๋ฌธ์ ์์ด! ์ฐ๋ฆฌ๋ ๋ญ๊ฐ๋ฅผ ์๊ฐํด ๋ผ ๊ฒ์ ๋๋ค!" -๋๋ ๋ ์์ ์๊ฒ ๋งํ๊ณ ์ฐพ๊ธฐ ์์ํ์ต๋๋ค.
๋ ๋ฒ์งธ ๋ถ๋ถ. ๊น์ ๋ฐ๊ตด.
๋ ผ๋ฆฌ์ ๋ฐ๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ ์ค์ด๋ฉด API์ ์ก์ธ์คํ ์ ์์ผ๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ด์ฅ๋ฉ๋๋ค. ๋ถ์ํด ๋ด ์๋ค.
์ฐ๋ฆฌ๋ ํธ๋ํฝ์ ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์ Wireshark๋ฅผ ์ ํํฉ๋๋ค. ์ฝ๊ฐ์ ์ด๋ ค์ ์์ด ๋ฐ์คํฌํฑ ์ปดํจํฐ๋ฅผ ํตํด ์ ํ๋ฅผ ์ธํฐ๋ท์ ์ฐ๊ฒฐํ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๊ณ ์์ฒญ์ ์ดํด๋ด ๋๋ค.
์๋ฌด๊ฒ๋ ๋ช
ํํ์ง ์์ ๊ฒ์ด ๋ถ๋ช
ํฉ๋๋ค
์, ๋ชจ๋ ๊ฒ์ด ์ํธํ๋์ด ์์ง๋ง ์ํธํ๋ฅผ ์๋ง์ผ๋ก ๋ง๋ค๊ณ ์ถ์ง๋ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ ํ๋ฆฌ์ผ์ด์ ์์ฒด ๋ด๋ถ๋ฅผ ์ดํด๋ด์ผ ํฉ๋๋ค.
๋์ปดํ์ผ๋จ ์ .apk, ์ดํด๋ณด๊ธฐ ์์ํ๊ฒ ์ต๋๋ค. API์๋ ๋ฌด์์ด ํ์ํฉ๋๊น? ์ค๋ฅธ์ชฝ, ์๋ ํฌ์ธํธ, ๋ชจ๋ ์์ฒญ์ด ์ ๋ฌ๋๋ ๊ณณ์ ๋๋ค. ์๋ง๋ http(s)์ผ ๊ฒ์ ๋๋ค. "https://"๋ฅผ ์ฐพ์๋ณด๊ฒ ์ต๋๋ค.
ํ์ผ์์ AuthLinkManager.smali
์ฐพ๊ธฐ
.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"
์ด๊ฒ์ Android ๊ฐ์ ๋จธ์ ์ ์ฝ๋์
๋๋ค(๋ฌ๋น
VM), ์ธ๊ฐ์๊ฒ๋ ๊ทธ๋ค์ง ์ดํดํ๊ธฐ ์ด๋ ต์ง๋ง ์ฌ์ ํ ์ ์ตํฉ๋๋ค. ์ฝํ
์ธ ์ ์ด๋ฆ, GitHub ์ ์ฅ์๋ก ํ๋จ๋๋ ์ด ์ธ ๊ฐ์ง ์์๋ ๋ค์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ก์ธ์ค ํ ํฐ์ ์์ฒญํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. GET
.
๋ ์์ธํ ์ดํด ๋ณด๊ฒ ์ต๋๋ค. ๊ฒ์์์ ๋ค์์ ๋์ค๋ ํ์ผ์ NetworkModule.smali
:
const-string v0, "https://habr.com/api/v1/"
๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ๊ฐ ๊ทํ์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ ๊ณณ์ ๋๋ค!
์์ฒด ์์ฑ ํด๋ผ์ด์ธํธ๊ฐ ์ ๋๋ก ์๋ํ๋ ค๋ฉด ์์๋ด์ผ ํ ๊ฒ์ด ํ ๊ฐ์ง๋ฟ์
๋๋ค. client_id
, ์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ณ ์ ์๋ณ์์ผ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
ํ์ง๋ง ์์ค์ฝ๋์์ ์ด ํ ์คํธ๋ฅผ ๊ฒ์ํด๋ ๊ด๋ จ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์์ต๋๋ค...
๊ทธ๋ฐ๋ฐ ๊ฐ์๊ธฐ ํ์ผ ์ค ํ๋์์ ํฅ๋ฏธ๋ก์ด ๋ฌธ๊ตฌ๊ฐ ๋์ ๋ค์ด์์ต๋๋ค.
const-string p8, "log-tag"
invoke-static {p8, p2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
์์๋ค์ํผ ์ด๊ฒ์ ๋ก๊ทธ ํญ๋ชฉ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ฌด์์ ๋ น์ํ๋์?
XNUMX๋ถ. ์ด๊ฒ๋ค์ ๋ก๊ทธ์ ๋๋ค!
์ฐ๋ฆฌ๋ ์ฌ์ฉ adb logcat
์ ํ๋ฆฌ์ผ์ด์
๋ก๊ทธ๋ฅผ ๋ณด๋ ค๋ฉด
์์์ธ๋ก ๋ก๊ทธ๋ ์์๋ณด๋ค ํจ์ฌ ๋ ์์ธํ ๊ฒ์ผ๋ก ๋ฐํ์ก์ต๋๋ค.
์ฌ๊ธฐ์๋ ์ฐ๋ฆฌ์๊ฒ ํ์ํ ๊ฒ๋ฟ๋ง ์๋๋ผ client_id
ํ์ง๋ง ํ ํฐ ์ฌ์ฉ์/์ ํ๋ฆฌ์ผ์ด์
๋ฐ ๋ก๊ทธ์ธ ะธ ์ํธ ๋ช
ํํ ํ
์คํธ๋ก!
์ผ๋ถ ์๋ชจ๋ก ๋ก๊ทธ์ ๋ก๊ทธ์ธ๊ณผ ๋น๋ฐ๋ฒํธ๊ฐ ์๋ค๋ ๊ฒ๋ง์ผ๋ก๋ ์๋ฌด๋ฐ ํด๋ฅผ ๋ผ์น์ง ์์ต๋๋ค. ์ด๋ฌํ ๋ก๊ทธ๋ ๋ฃจํธ ๊ถํ์ด๋ ๋ค์์ ํตํ ์ฐ๊ฒฐ์ ํตํด์๋ง ์ฝ์ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค. adb
. ๊ทธ๋ฌ๋ Habr์ ์ฝ๋ ์ฌ๋๋ค ์ค์๋ ๋๋ฒ๊น
์ ํ์ฑํํ Android ๊ฐ๋ฐ์๊ฐ ์๋ค๋ ์ฌ์ค๋ก ์ธํด ์ด๊ฒ์ด ๋ฌธ์ ๊ฐ ๋ฉ๋๋ค.
์ด๋ฐ ๊ฒฝ์ฐ ๊ณตํญ์์ '๋ฌด๋ฃ ์ถฉ์ '์ ํ๋ฉด ๊ณ์ ๋์ฉ์ด ๋ฐ์ํ ์ ์๋๋ฐ, ๋๊ฐ ํ์ํ ๊น์?
์ด ๋ก๊ทธ์์ ๋ค์์ ์ถ์ถํ ์ ์์ต๋๋ค.
client_id
ะธapikey
์ก์ธ์คํ๋ ๋ฐ ํ์ API๋ฅผ;- ์ฌ์ฉ์ ์ธ์ฆ URL(์ด์ํ์ง๋ง ์ ์ฅ์์ ์ด ๋ฐฉ๋ฒ์ ๋ํ ๋ด์ฉ์ด ์์ต๋๋ค. ์ ๊ณต๋์ง ์์์ ์๋ ์์ต๋๋ค.)
๊ทธ๊ฒ์ด ์ผ์ด๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด ์์ ์ฐ๊ตฌ๋ฅผ ๋ฐํ์ผ๋ก ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฒด์ ์ผ๋ก ๊ตฌํํ๋ ์๊ท๋ชจ ํ๋ก์ ํธ ์์ ์ด ์ด๋ฏธ ์งํ ์ค์ ๋๋ค. ๋๋ ๋ฉ์์ง ์์ฑ์ ๋๊ณ ์ถ์ ์ฌ๋๋ค๊ณผ ๋ค๋ฅธ ๋ชจ๋ ์ฌ๋๋ค์๊ฒ ํฌํ๋ฅผ ์์ฒญํฉ๋๋ค (๋๊ตฌ์๊ฒ ์ด๊ฒ์ด ํ์ํ์ง ์ดํดํ๊ณ ์ถ๊ธฐ ๋๋ฌธ์ ๋๋ค).
๊ฐ์ฌํฉ๋๋ค!
๋ฑ๋ก๋ ์ฌ์ฉ์๋ง ์ค๋ฌธ ์กฐ์ฌ์ ์ฐธ์ฌํ ์ ์์ต๋๋ค.
Habr ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ์๋์?
-
๋ค, ์ฌ์ฉํ๊ณ ์์ด์ ๋ง์กฑํด์
-
๋ค, ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ถํธ์ ๋ผ์นฉ๋๋ค.
-
์๋์, ํด๋์ ํ์์ ์น ๋ฒ์ ์ ์ฌ์ฉํฉ๋๋ค.
-
์๋์, ๋ด ์ปดํจํฐ์์ Habr์ ์ฌ์ฉํฉ๋๋ค.
357๋ช
์ ์ฌ์ฉ์๊ฐ ํฌํํ์ต๋๋ค. 30๋ช
์ ์ฌ์ฉ์๊ฐ ๊ธฐ๊ถํ์ต๋๋ค.
์ถ์ฒ : habr.com