(Un) නිල Habr යෙදුම - HabrApp 2.0: ප්‍රවේශය ලබා ගැනීම

එක් කම්මැලි සහ දැනටමත් තරමක් කම්මැලි සන්ධ්‍යාවක්, මම, පිටත් වෙනවා නිල Habr යෙදුම, නැවත වරක් මම මගේ ඇඟිලි නැමී, එක් එක් වැඩ නොකරන විශේෂාංග සඳහා එකක්. මෙන්න, උදාහරණයක් ලෙස, ඔබට අදහස් දැක්විය නොහැක, මෙහිදී ඔබට ඡන්දය ප්‍රකාශ කිරීමේ අයිතිය ප්‍රතික්ෂේප කර ඇත, සහ පොදුවේ, සූත්‍ර තිරයේ නොපෙනෙන්නේ ඇයි?

(Un) නිල Habr යෙදුම - HabrApp 2.0: ප්‍රවේශය ලබා ගැනීම
එය තීරණය විය: අපට සුවපහසු, ප්රසන්න, අපේම දෙයක් අවශ්ය විය. Habr සඳහා ඔබේම අයදුම්පත ගැන කුමක් කිව හැකිද?
තත්වය තේරුම් ගැනීමට මම ඔබට තිරපිටපත් කිහිපයක් දෙන්නම්.

(Un) නිල Habr යෙදුම - HabrApp 2.0: ප්‍රවේශය ලබා ගැනීමමේ වගේ දෙයක් පේනවා එය - වල. habr.com යෙදුම

"අපහසුතා" ලැයිස්තුව

  • ඔබට ශ්‍රේණිගත කිරීම 0 ට වඩා වෙනස් ප්‍රකාශනයක් ඇගයීමට ලක් කළ නොහැක
  • කමෙන්ට් එකක් ලියන්න හැමදාම බෑ
  • ඡන්ද වැඩ කරන්නේ නැහැ
  • සූත්‍ර අඳුරු තේමාවෙන් නොපෙනේ (කළු මත කළු)
  • සියලුම පිටු සලකුණු නොමැත

ඔව්, පසුගිය වසරේ අගෝස්තු මාසයේ සිට යෙදුම යාවත්කාලීන කර නැත, නමුත් එය තවමත් නරකයි. පොදුවේ, එය නිවැරදි කිරීම අවශ්ය වේ.

පළමු කොටස. ප්රවේශය සොයමින්.

ඉක්මන් Google විමසුම "habrahabr API" එය දැනටමත් තරමක් යල්පැන ඇති බව පවසයි ගබඩාව Github මත, එතැන් සිට යාවත්කාලීන කර නොමැත නොවැම්බර් 21 2016, සහ මේ, මොහොතකට, අවුරුදු දෙකහමාරක්.

මෙය PHP බව නොසලකා හරිමින්, පහළට අනුචලනය කර කියවන්න:

අයදුම්පත් හැඳුනුම්පත ලබා ගැනීම

ප්‍රයෝජන ගනිමින් මෙම පෝරමය Habrahabr මත, ඔබ නව යෙදුමේ සාරය සහ එයට API අවශ්‍ය වන අරමුණ කෙටියෙන් විස්තර කළ යුතුය.

ප්‍රශ්නයක් නැත, ඔබට ප්‍රවේශය ලබා ගැනීමට අවශ්‍ය නම්, ඔබට එය අවශ්‍ය වේ. අපි ලිපියක් ලියන්නෙමු (කෙටියෙන්):

ලිපියක්

PWA මත පදනම්ව Habr සඳහා අයදුම්පතක් ඉදිරිපත් කිරීමට ආශාවක් තිබේ. මෙයට හේතු කිහිපයක් තිබේ. 

පළමු සහ වඩාත්ම පැහැදිලිය: Android යෙදුම මගේ පුද්ගලික අවශ්‍යතා සපුරාලන්නේ නැත.

දෙවනුව: සාමාන්‍යයෙන් විද්‍යුත් තැපෑලෙන් එන සියලු වර්ගවල දේවල් පිළිබඳ ප්‍රමාණවත් දේශීය දැනුම්දීම් නොමැත (උදාහරණයක් ලෙස අදහස්).

තෙවනුව: මගේ රුචිකත්වයන් සැලකිල්ලට ගනිමින්, මට උනන්දුවක් දක්වන පුද්ගලයින්/මධ්‍යස්ථාන පිළිබඳ පුද්ගලික සංග්‍රහයන් (ඉදිරිදර්ශනයක් ලෙස).

පිළිතුර, ඇත්ත වශයෙන්ම, ඉතා ප්රසන්න නොවේ, නමුත් අවම වශයෙන් අවංක විය:

අවාසනාවකට, අපගේ API වෙත ප්‍රවේශය දැනට නොමැත. අපි API අවසන් කිරීමෙන් පසු ප්‍රවේශය සැපයීම නැවත ආරම්භ කිරීමට සැලසුම් කරමු, නමුත් අපට තවමත් නිශ්චිත දිනයන් නොමැත, මන්ද අපි දැනට වෙනත් ප්‍රමුඛතා කාර්යයන් විසඳීමේ කාර්යබහුල වෙමු.

“හරි, ප්‍රශ්නයක් නෑ! අපි මොනවා හරි හදමු!" - මම මටම කියාගෙන බලන්න පටන් ගත්තා.

දෙවන කොටස. ගැඹුරු කැණීම්.

තර්කනය මත පදනම්ව, යෙදුම ක්‍රියාත්මක වන්නේ නම්, එයට API වෙත ප්‍රවේශය ඇති අතර, එය යෙදුමට තද කර ඇත. අපි විශ්ලේෂණය කරමු.

අපි ට්‍රැෆික් සමඟ කටයුතු කරන නිසා, Wireshark අපගේ තේරීමයි. යම් වේදනාවක් නොමැතිව, ඩෙස්ක්ටොප් පරිගණකයක් හරහා දුරකථනය අන්තර්ජාලයට සම්බන්ධ කර, අපි යෙදුම විවෘත කර ඉල්ලීම් දෙස බලමු:

(Un) නිල Habr යෙදුම - HabrApp 2.0: ප්‍රවේශය ලබා ගැනීම
කිසිවක් පැහැදිලි නැති බව පැහැදිලිය

ඔව්, සෑම දෙයක්ම සංකේතනය කර ඇත, නමුත් මට ගුප්ත ලේඛන සමඟ අවුල් කිරීමට අවශ්ය නැත. එවිට ඔබ යෙදුම තුළම බැලිය යුතුය.

විසංයෝජනය කරන ලදී .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"

මෙය ඇන්ඩ්‍රොයිඩ් අතථ්‍ය යන්ත්‍රය සඳහා වන කේතයයි (ඩල්වික් වී.එම්), මිනිසුන්ට එතරම් තේරුම්ගත නොහැකි නමුත් තවමත් තරමක් තොරතුරු. මෙම නියතයන් තුන, ඒවායේ අන්තර්ගතය සහ නම අනුව විනිශ්චය කිරීම මෙන්ම 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

මෙය, ඔබට තේරුම් ගත හැකි පරිදි, ලොග් ඇතුළත් කිරීමකි. නමුත් පටිගත කරන්නේ කුමක්ද?

තුන්වන කොටස. මේ ලඝු-සටහන්!

අපි පාවිච්චි කරන්නේ adb logcat යෙදුම් ලොග බැලීම සඳහා.

(Un) නිල Habr යෙදුම - HabrApp 2.0: ප්‍රවේශය ලබා ගැනීම

අනපේක්ෂිත ලෙස, ලොග් බලාපොරොත්තු වූවාට වඩා සවිස්තරාත්මක විය.

මෙහිදී අපට අවශ්‍ය දේ පමණක් නොවේ client_id, නමුත් ඒවගේම සංකේතය පරිශීලක/යෙදුම, සහ ඇතුල් වන්න и මුරපදය සරල පාඨයෙන්!

සමහර කුමන්ත්රණ න්යායන්මෙම ලඝු-සටහන් කියවිය හැක්කේ මූල අයිතිවාසිකම් හෝ හරහා සම්බන්ධතාවයක් සමඟ පමණක් බැවින්, ලොගයේ පිවිසුම් සහ මුරපදයක් තිබීමෙන් කිසිවකට හානියක් සිදු නොවේ. adb. නමුත් Habr කියවන අය අතර debugging enable කර ඇති Android developers ලා සිටීම නිසා මෙය ගැටළුවක් වෙනවා.

මෙම අවස්ථාවෙහිදී, ගුවන් තොටුපලේ "නොමිලේ අයකිරීම්" ගිණුමේ සොරකම් කිරීමට හේතු විය හැක, නමුත් එය අවශ්ය වන්නේ කාටද?
මෙම ලොග වලින් අපට උපුටා ගත හැක:

  • client_id и apikeyප්රවේශ වීමට අවශ්ය ;
  • පරිශීලක අවසර URL (අමුතුයි, නමුත් මෙම ක්‍රමය ගැන ගබඩාවේ කිසිවක් නැත, සමහර විට එය සපයා නොමැතිද?)

ඒක එහෙම වුණා. මෙම කුඩා පර්යේෂණය මත පදනම්ව, කුඩා ව්‍යාපෘතියක වැඩ දැනටමත් සිදු වෙමින් පවතී - අපගේම ජංගම යෙදුමක් ක්‍රියාත්මක කිරීම. පණිවිඩයක් ලිවීමට උදව් කිරීමට කැමති අයගෙන් මම ඉල්ලා සිටිමි, සහ අනෙක් සියල්ලන්ට - ඡන්දය දෙන්න (මට මෙය අවශ්‍ය දැයි තේරුම් ගැනීමට අවශ්‍ය නිසා).

Спасибо!

සමීක්ෂණයට සහභාගී විය හැක්කේ ලියාපදිංචි පරිශීලකයින්ට පමණි. පුරන්නකරුණාකර.

ඔබ Habr ජංගම යෙදුම භාවිතා කරන්නේද?

  • ඔව්, මම එය භාවිතා කරමි, මම ඒ ගැන සතුටු වෙමි

  • ඔව්, මම එය භාවිතා කරමි, යෙදුම අපහසුතාවයට හේතු වේ

  • නැත, මම මගේ දුරකථනයේ වෙබ් අනුවාදය භාවිතා කරමි

  • නැහැ, මම මගේ පරිගණකයෙන් Habr භාවිතා කරනවා

පරිශීලකයින් 357 දෙනෙක් ඡන්දය දුන්හ. පරිශීලකයින් 30 දෙනෙක් ඡන්දය දීමෙන් වැළකී සිටියහ.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න