OAuth: maelezo ya itifaki kwa lugha rahisi na inayoeleweka. Jinsi ya kuunda ishara. Vitambulisho na Ishara

Kuna njia nyingi za kusambaza barua taka mbaya kwenye VKontakte. Lakini wadudu hawalala, zaidi na zaidi huja kwenye vichwa vyao mawazo ya kuvutia. Na iligeuka kuwa muhimu sana. Walaghai wamejifunza kuitumia kukwepa ukurasa wa onyo kuhusu tovuti hasidi.

Na yote yalianza wakati siku moja ujumbe ufuatao ulionekana kwenye ukuta wangu:


Kwa udadisi, nilifuata kiungo na kuishia kwenye tovuti nyingine ya kuhadaa ili kupata maelezo ya kibinafsi. Lakini kiunga chenyewe kilionekana kuwa cha kushangaza kwangu, ilionekana kama (nusu ya wahusika katika ASCII):
vkontakte.ru/away.php ? kwa=http%3A%2F%2FApi.vKontakte.Ru%2F%2Fo%2561u%2574%…

Hapa ndipo furaha huanza ...
Wacha tuangalie kiunga cha pili katika sehemu:

Kila parameta inamaanisha nini:

  • mteja_id - kitambulisho cha programu ambayo inahitaji uidhinishaji;
  • redirect_uri - anwani ambayo access_token itatumwa (kupitia kuelekeza);
  • kuonyesha - aina ya dirisha la idhini (ukurasa, popup, gusa na wap).
Kwa kweli, redirect_uri ilikuwa na anwani ya tovuti ya kuhadaa ili kupata maelezo ya kibinafsi. Kwa kuwa kulikuwa na hitilafu katika kigezo cha kuonyesha (kilikuwa na takataka "?390852"), dirisha la uidhinishaji halikuonyeshwa, lakini mara moja lilielekezwa kwenye tovuti ya hadaa yenye vigezo vifuatavyo: error=invalid_request&error_description=Onyesho+Batili+limepitishwa.

Hii ndio hatua nzima ya kupitisha orodha nyeusi ya tovuti mbaya za VKontakte. Tahadhari tu kuhusu mpito kwa api.vk.com inaonekana. Na kama matokeo ya mpito, tunaenda moja kwa moja kwenye tovuti ya kuhadaa ili kupata maelezo ya kibinafsi ambayo iko kwenye orodha nyeusi. Unapofuata kiungo vkontakte.ru/away.php?to=vgostivk.dyndns**:

Kama ilivyotokea, programu inayodaiwa kuhitaji idhini ilikuwa ikining'inia kwa mtumiaji aliyedukuliwa:

Na tovuti ya hadaa yenyewe iliundwa kwa kuvutia sana. Ubunifu, kama kawaida, ulikuwa mtindo wa mawasiliano na uliulizwa kuingia. Niliingia kwa kutumia barua pepe na nenosiri la nasibu, na nimemeza bandia vizuri. Kilichotokea baadaye kilikuwa cha kufurahisha zaidi; habari kutoka kwa "Pavel Durov" zilionekana kwenye ukurasa kuu:

Baada ya kubofya kitufe cha "Unda kihesabu cha kibinafsi", upau mzuri wa maendeleo ulifuata. Kisha uliulizwa kuashiria nambari yako na kutuma SMS:

Kwa nadharia, baada ya "kuwezesha" kufanikiwa inapaswa kuelekezwa kwenye ukurasa wa activ.php, lakini sikuweza kufika huko. Dondoo kutoka kwa hati za JS za tovuti ya kuhadaa ili kupata maelezo ya kibinafsi:

...
ikiwa (req.hali == 200) (
// ikiwa hali ni 200 (Sawa) - toa jibu kwa mtumiaji
ikiwa (req.responseText == "sawa" ) (
//statusElem.innerHTML = "Kila kitu kinapiga kelele!";
get_activation();
}
ikiwa (req.responseText == "not" ) (statusElem.innerHTML = "Msimbo batili wa kuwezesha";}
//statusElem.innerHTML = "Jibu la seva: "+req.responseText;
...
kazi get_activation() (
hati .location="activ.php" ;
}

* Msimbo huu wa chanzo uliangaziwa kwa Kiangazia Chanzo cha Msimbo.


Mstari wa chini: Walaghai hutumia OAuth 2.0 kukwepa maonyo, kupata nenosiri na barua pepe ya mtumiaji, na hata kujaribu kulaghai kutuma sms(uwezekano mkubwa zaidi unatumia mfumo wa usajili).
  1. Kufungua kivinjari kilichojengwa na ukurasa wa kuingia
  2. Mtumiaji anaulizwa kuthibitisha kuwa haki zimetolewa.
  3. Mtumiaji akikubali, kivinjari kitaelekezwa kwenye ukurasa wa mbegu kwenye kipande (baada ya #) URL ambayo huongezwa. ishara ya ufikiaji
  4. Programu huingilia uelekezaji upya na kupokea ishara ya ufikiaji kutoka kwa anwani ya ukurasa
Chaguo hili linahitaji kuinua dirisha la kivinjari katika programu, lakini hauhitaji sehemu ya seva na simu ya ziada seva-kwa-seva kwa kubadilishana nambari ya idhini juu ishara ya ufikiaji.
Mfano
Fungua kivinjari na ukurasa wa kuingia:
> PATA /oauth/authorize?response_type=token&client_id=464119 HTTP/1.1 > Mpangishi: connect.mail.ru

Baada ya mtumiaji kutoa ruhusa, kuelekeza upya hutokea kwa ukurasa wa kawaida wa mbegu, kwa Mail.Ru hii ni connect.mail.ru/oauth/success.html:
< HTTP/1.1 302 Found < Location: http://connect.mail.ru/oauth/success.html#access_token=FJQbwq9&token_type=bearer& expires_in=86400&refresh_token=yaeFa0gu

Ni lazima maombi yakatiza uelekezaji upya wa mwisho na upate kutoka kwa anwani ishara_ya_ufikiaji na kuitumia kupata rasilimali zinazolindwa.

Uidhinishaji kwa kuingia na nenosiri

Uidhinishaji kwa kuingia na nenosiri ni ombi rahisi la POST, kama matokeo ambayo inarudi ishara ya ufikiaji. Mpango huu sio mpya, lakini umejumuishwa katika kiwango cha jumla na unapendekezwa kutumika tu wakati chaguzi zingine za uidhinishaji hazipatikani.
Mfano
> POST /oauth/token HTTP/1.1 > Jeshi: connect.mail.ru > Content-Type: application/x-www-form-urlencoded > > grant_type=password&client_id=31337&client_secret=deadbeef&username=api@corp.mail.ru& password= qwerty< HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"SlAV32hkKG", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"8xLOxBtZp8", < }
Maelezo katika vipimo

Inarejesha idhini ya awali

Kwa kawaida, ishara ya ufikiaji ina maisha mafupi ya rafu. Hii inaweza kuwa na manufaa, kwa mfano, ikiwa inapitishwa njia wazi. Ili kuzuia kulazimisha mtumiaji kuingia baada ya kumalizika muda wake ishara ya ufikiaji"na, katika chaguzi zote hapo juu, kwa kuongeza ishara ya ufikiaji"labda urudi tena onyesha upya ishara. Unaweza kuitumia kupata ishara ya ufikiaji kutumia ombi la HTTP, sawa na idhini ya kutumia kuingia na nenosiri.
Mfano
> POST /oauth/token HTTP/1.1 > Jeshi: connect.mail.ru > Content-Type: application/x-www-form-urlencoded > > grant_type=refresh_token&client_id=31337&client_secret=deadbeef&refresh_token=8xLOxBtZp8< HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"Uu8oor1i", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"ohWo1ohr", < }

Itifaki maarufu ambayo inaruhusu kijamii huduma kuunganishwa na kila mmoja na inaruhusu njia salama kubadilishana habari za kibinafsi. OAuth inaweza kuunganisha huduma 2, ambazo kila moja ina msingi wake wa watumiaji - ndio ninachotafuta. kwa kesi hii Ninaiita "kijamii". Unapoanza kufanya kazi na OAuth, hisia ya kwanza ni kwamba itifaki ni ngumu sana na haina maana. Katika nakala hii nitajaribu kuelezea misingi ya OAuth lugha ya binadamu.

Mfano wa uidhinishaji mtambuka

Wacha turudi 2005 na tufikirie kuwa tunaandika mtandao wa kijamii. Ina fomu ya kuleta waasiliani kutoka kwa anwani Vitabu vya Gmail. Kinachohitajika kufikia Anwani za Gmail? Bila shaka, kuingia na nenosiri kwa sanduku la barua. Lakini tukikuuliza uziweke kwenye tovuti yetu, mtumiaji atashuku kuwa kuna kitu kibaya. Je, ni wapi hakikisho kwamba hatuhifadhi manenosiri yaliyoingizwa kwenye seva? Kwa hivyo tunataka nenosiri liingizwe kwenye tovuti ya Gmail pekee, na baada ya hapo ufikiaji wa anwani kupitia API ya GMail ulitolewa na yetu mtandao wa kijamii(labda kwa muda). Tukubaliane kwa masharti.
  • Mtumiaji: mtumiaji; hati ya kuchakata fomu ya kuingiza anwani kwenye mtandao wa kijamii.
  • Mtoa huduma: mtoaji data; GMail, iliyo na data ya kitabu cha anwani inayomvutia Mtumiaji.
  • Mtumiaji: mtumiaji ambaye ana akaunti na Mtumiaji na Mtoa Huduma.
  • Rasilimali iliyolindwa: taarifa binafsi; anwani kutoka kwa kitabu chako cha anwani cha Gmail (k.m. Rasilimali za huduma Mtoa huduma).
  • API ya Mtoa huduma: API ya GMail inayoruhusu hati yoyote kupata anwani kutoka kwa kitabu cha anwani cha GMail.
Jukumu la OAuth- hakikisha kwamba Mtumiaji ana fursa ya kufanya kazi kwenye Huduma ya Mtumiaji (kwenye mtandao wa kijamii) na data iliyolindwa ya Mtoa Huduma (GMail), akiingiza nenosiri la data hii kwa Mtoa Huduma pekee na wakati unabaki kwenye Mtumiaji. tovuti. Sio ngumu sana, sawa?

Je, OAuth ni tofauti gani na OpenID?

OAuth mara nyingi hujulikana kama "itifaki ya roboti," kinyume na OpenID kama "itifaki ya mtumiaji." Usiwachanganye!
  1. OpenID ni itifaki ya usajili ulioharakishwa. OpenID inaruhusu mtumiaji kupata akaunti kwenye huduma yoyote bila kuingiza nenosiri ikiwa tayari amesajiliwa mahali pengine kwenye mtandao. (Na kisha unaweza kuingia kwenye huduma bila kuingia nenosiri, ukiidhinishwa "mahali fulani.") Kwa mfano, ikiwa una akaunti kwenye Yandex, unaweza kuitumia "kuingia" kwa huduma yoyote inayounga mkono idhini ya OpenID.
  2. OAuth ni itifaki ya ufikiaji ulioidhinishwa kwa API za watu wengine. OAuth huruhusu hati ya Mtumiaji kupata ufikiaji mdogo wa API kwa data ya Mtoa Huduma wa wengine ikiwa Mtumiaji atatoa idhini. Wale. ni njia ya kufikia API.

Ulinganisho wa polisi

Fikiria kuwa wewe ni mfanyakazi wa Idara ya Upelelezi wa Jinai, unatafuta mwisho wa kesi ya wizi wa WebMoney kutoka 1973. Wacha tukubaliane kwa masharti:
  • OAuth Consumer: Uchunguzi wa jinai.
  • Mtumiaji: Afisa Upelelezi wa Makosa ya Jinai.
  • Mtoa huduma: Faili ya kadi ya kumbukumbu ya uhalifu.
  1. OpenID: Mfanyikazi wa Idara ya Upelelezi wa Jinai (Mtumiaji) anakuja kwenye Fahirisi ya Kadi (Mtoa Huduma), anawasilisha Uidhinishaji mlangoni na kupanga kupitia kadi papo hapo ili kutafuta maelezo.
  2. OAuth: Mfanyikazi wa Idara ya Upelelezi wa Jinai (Mtumiaji) moja kwa moja kutoka kazini (Mtumiaji) huita Kielezo cha Kadi (Mtoa Huduma). Anaripoti jina lake; ikiwa anatambuliwa (Uidhinishaji), anauliza kutoa orodha ya uhalifu wote wa 1973 (simu ya API).
Kama unavyoona, OpenID na OAuth ni vitu tofauti. OpenID hukuruhusu kufikia rasilimali fulani papo hapo. OAuth huhakikisha kwamba baadhi ya maelezo yanarejeshwa kutoka kwa huduma ya mbali kupitia API.

Muhtasari wa makala hii

Kabla ya kuendelea na sehemu kuu, hebu tuone jinsi tutakavyoendelea.
  1. Wacha tuzingatie shida zinazotokea wakati wa kutekeleza idhini ya msalaba "kwa mikono".
  2. Wacha tuzungumze juu ya "maombi" ni nini na Mtumiaji ni nani.
  3. Hebu tuguse misingi ya cryptography.
  4. Wacha tuonyeshe programu ya demo ambayo tutaandika katika nakala hii.
  5. Wacha tuamue juu ya seva ya OAuth ya majaribio ambayo tutajaribu.
  6. Wacha tupitie hatua zote za itifaki ya OAuth na tupe vyanzo vya hati.

Kuhusu uvumbuzi wa baiskeli

Njia nzuri ya kuelewa kitu ni kuifanya mwenyewe, ukikanyaga tafuta zote zilizowekwa njiani. Sasa tutaanzisha tena gurudumu: hebu tujaribu kufikiria jinsi tungesuluhisha tatizo la mwingiliano kati ya Mtumiaji na Mtoa Huduma bila itifaki yoyote sanifu.

Kwanza, hebu tuandike fomu yenyewe ya kuleta waasiliani kutoka kwa GMail: Kisha, tutawauliza wasanidi wa GMail kuhakikisha kuwa mtumiaji anapoabiri hadi URI /auth.php, atapewa fomu ya uidhinishaji (katika veloworld yetu, GMail. imeandikwa katika PHP). Baada ya kuingiza nenosiri kwa mafanikio, mtumiaji anapaswa kuelekezwa kwenye tovuti ambayo URL yake imebainishwa katika kigezo cha retpath. Pia, kwa kuongeza, ufunguo fulani wa siri lazima usambazwe katika URL, ambayo tayari inaweza kutumika kufikia API ya GMail.

Kwa hiyo, baada ya kuingia nenosiri, mtumiaji atarudi kwenye tovuti yetu kwa anwani ifuatayo: Na kutoka kwa script /import.php tutageuka kwenye API ya GMail, kupitisha ufunguo wa Y49xdN0Zo2B5v0RR ndani yake na kupakia mawasiliano: Naam, hebu sasa. hesabu reki (kwa sababu matuta itachelewa kuhesabu).

Reki ya kwanza: kuchukua nafasi ya anwani ya kurudi nyuma

Kweli, bila shaka, ulidhani kwamba mshambuliaji ataweka kiungo kwenye tovuti yake kwanza na kukulazimisha kubofya. Kwa hivyo, atapokea ufunguo wa siri ambao GMail ilirejesha, na kwa hivyo anwani zako:

Njia ya pili: "kusikiliza" kwenye ufunguo wa siri

Wacha tuseme tulilinda njia ya kurudi nyuma, na sasa inaweza kuelekeza kwenye tovuti yetu tu. Lakini tatizo la kigezo cha siri bado. Siri inaweza kuchunguzwa kutoka nyuma au kuzuiwa kwa kusikiliza trafiki ya WiFi. Au siku moja tovuti yako itakuwa na mazingira magumu ya XSS ambayo hukuruhusu "kuiba" ufunguo wa siri. Kwa siri ya thamani, mshambuliaji ataweza kusoma yako kitabu cha anwani. Hii ina maana kwamba siri hiyo inahitaji kulindwa dhidi ya kutekwa (kwa kweli, haipaswi kusambazwa kupitia URL hata kidogo).

Cheza nambari ya tatu: uelekezaji upya mwingi sana

Iwapo kila simu ya API inahitaji siri tofauti, basi tutalazimika kupanga uelekezaji kwingine kwa tovuti ya Mtoa Huduma kwani kuna simu. Kwa makali kwa kutumia API inafanya kazi polepole sana na haifai kabisa ...

Rake namba nne: kitambulisho duni cha watumiaji

GMail, bila shaka, inataka kujua ni nani anayetumia API yake. Ruhusu ufikiaji wa baadhi ya tovuti na ukatae ufikiaji kwa wengine... Hii ina maana kwamba wakati wa kuunda ombi katika fomu ya kuleta mawasiliano, Mtumiaji (tovuti) lazima "awasilishwe" kwa Mtoa Huduma (GMail). Kwa upande wetu, kazi hii inafanywa kwa sehemu na retpath (jina la tovuti ndani yake), lakini njia hii si kwa wote, kwa sababu Utaratibu wa "wasilisho" lazima pia uanzishwe wakati wa kupiga simu kwa njia za API.

Wakfu wa OAuth

Ni muhimu kukumbuka kuwa bado kuna "raki za chini ya maji" zilizobaki. Sitawaelezea hapa, kwa sababu reki hizi ziko kwenye Mfereji wa Mariana (kirefu, 10920 m). Itachukua kurasa kadhaa kuelezea udhaifu. Kwa hivyo nitaruka moja kwa moja kwenye maelezo ya OAuth, ambapo shida zote tayari zimetatuliwa.

Maombi = Mtumiaji + ufikiaji wa API

Unapofanya kazi na OAuth, ni muhimu kwamba neno Consumer sio tu kwa maana ya "tovuti". Mtumiaji ni kitu maombi, na mahali ilipo sio muhimu sana. Mifano ya Watumiaji kutoka maisha halisi: Lakini huwezi kufanya fujo kutoka kwa OAuth peke yako. Kweli, yote ambayo OAuth hutoa ni uwezo wa kuingia huduma ya mbali(Mtoa Huduma) na ufanye maombi yaliyoidhinishwa kwa API. Haijalishi jinsi API hii imeundwa: inaweza kuwa SOAP safi, mbinu ya REST, nk Jambo kuu ni kwamba kila njia ya API inachukua kama pembejeo vigezo maalum vinavyopitishwa kulingana na Itifaki ya OAuth.

Ishara = Ufunguo + Siri

Moja ya kanuni za OAuth inasema kwamba hakuna funguo za kibinafsi zinapaswa kupitishwa hadharani katika maombi (tuliangalia kwa nini katika mfano hapo juu). Kwa hiyo, itifaki inafanya kazi na dhana ya Tokeni. Ishara ni sawa na jozi ya kuingia + nenosiri: kuingia - habari wazi, na nenosiri linajulikana tu kwa vyama vya kutuma na kupokea. Kwa maneno ya OAuth, analog ya kuingia inaitwa Ufunguo, na analog ya nenosiri inaitwa Siri. Hali wakati Siri inajulikana tu kwa mtumaji na mpokeaji, lakini kwa mtu mwingine yeyote, inaitwa Siri ya Pamoja.

Kwa hivyo, ikiwa Mtumiaji na Mtoa Huduma kwa njia fulani watakubaliana kuhusu Siri ya Pamoja, wanaweza kubadilishana kwa uwazi Vifunguo vinavyolingana katika URL bila hofu ya funguo hizo kuingiliwa. Lakini jinsi ya kulinda URL na Funguo kutoka kwa kughushi?

Ujumbe = Hati + Sahihi ya Dijiti

"Sahihi ya Dijiti" inaonekana ya kutisha, lakini kwa kweli ni jambo la wazi kabisa. Unaposaini hati kwa kalamu, unathibitisha kuwa hati hiyo iliandikwa na wewe na sio mtu mwingine. Sahihi yako ni, kama ilivyokuwa, "imeongezwa" kwenye hati na huenda nayo katika "seti moja".

Vile vile, sahihi ya dijiti huongezwa kwenye kundi la data ili kuhakikisha kuwa mtu aliyeunda data haigai mtu mwingine. Sahihi ya dijitali haisimba hati kwa njia fiche, inahakikisha tu uhalisi wake! Siri ile ile ya Pamoja, ambayo inajulikana kwa mpokeaji na mtumaji, lakini hakuna mtu mwingine, inakuwezesha kusaini.

Inavyofanya kazi? Hebu $sharedSecret = 529AeGWg yetu, na tukanong'ona kwenye sikio la mtu anayepokea. Tunataka kutuma ujumbe "Simu yangu 1234567" yenye ulinzi wa uhakika dhidi ya kuchezewa na mshambulizi.

  1. Mtumiaji anaongeza saini ya dijiti kwa ujumbe, in mtazamo wa jumla- $transfer = $message . "-". md5($message . $sharedSecret); // $transfer = "Simu yangu ni 1234567" . "-". md5("Simu yangu ni 1234567" . "529AeGWg")
  2. Mtoa Huduma huchukua data, na kuigawanya tena katika sehemu 2 - $message na $signature - na hufanya operesheni sawa kabisa: $signatureToMatch = md5($message . $sharedSecret); // $signatureToMatch = md5("Simu yangu ni 1234567" . "529AeGWg"); Kinachobaki ni kulinganisha thamani ya $signatureToMatch inayotokana na data iliyopokelewa ya sahihi ya $na kuripoti uwongo ikiwa thamani hazilingani.

Onyesho la jinsi OAuth inavyofanya kazi kwa kutumia programu rahisi kama mfano

Ili kupata hisia za kweli kwa OAuth, tunahitaji vitu viwili:
  1. Hati inayotekeleza sehemu ya mteja itifaki. Niliandika hati ndogo kama hiyo ya PHP (kiunga cha kumbukumbu ya zip). Hii ni wijeti inayoweza kuingizwa kwenye tovuti za PHP.
  2. Seva ya OAuth ya majaribio ambayo tunaweza kufanya majaribio. Kwa kusudi hili ni rahisi kutumia RuTvit: kuna ukurasa http://rutvit.ru/apps/new, ambayo inakuwezesha kuongeza maombi ya mtihani katika sekunde 30. (Kwa njia, sio lazima ubainishe URL ya kurejesha katika fomu - bado tunaipitisha kutoka kwa hati ya jaribio.)
Kwa kuangalia msimbo wa hati ya onyesho na kusoma maelezo hapa chini kwenye kifungu, unaweza kuelewa maelezo ya itifaki.

Unaweza kuingiza wijeti hii kwenye tovuti yoyote ya PHP kwa kunakili tu msimbo wake na kurekebisha mpangilio. Twiti zote kutoka kwa huduma ya RuTvit zilizowekwa alama ya reli maalum huonyeshwa, na pia inawezekana kuongeza twiti mpya (hapa ndipo OAuth inapotumika). Wijeti hutumia API ya RuTvit na idhini ya OAuth, ambayo, kwa njia, inaambatana na kiwango cha API cha Twitter. Unaweza kuendesha hati hii kwenye seva yako ya majaribio. Ili kufanya hivyo, unahitaji kufanya hatua tatu:

  1. Pakua msimbo wa hati na uipeleke kwa saraka yoyote inayofaa kwenye seva ya wavuti.
  2. Sajili programu yako mpya ya majaribio na seva ya OAuth.
  3. Baada ya kusajili programu, badilisha vigezo vya OA_CONSUMER_KEY na OA_CONSUMER_SECRET kwenye hati na maadili uliyopokea kutoka kwa seva.

Usajili wa programu na mipangilio

Hebu tuzungumze kuhusu wapi maombi yanatoka na jinsi Mtoa Huduma hujifunza juu yao. Kila kitu ni rahisi sana: Mtoa Huduma ana fomu maalum ya usajili ya maombi ambayo mtu yeyote anaweza kutumia. Hapa kuna mfano wa fomu kama hii:


Baada ya kusajili ombi lako, unapewa vigezo 5 vinavyohitajika kufanya kazi na OAuth. Hivi ndivyo wanaweza kuonekana kama:


Hapa, Ufunguo wa Mtumiaji na Siri ya Mtumiaji ni aina ya "kuingia + nenosiri" la programu yako (kumbuka mazungumzo yaliyo hapo juu kuhusu tokeni? Hili ni mojawapo tu). Acha nikukumbushe kwamba Siri ya Mtumiaji ni Siri ya Pamoja, inayojulikana tu na mtumaji na mpokeaji, lakini si kwa mtu mwingine yeyote. Thamani 3 zilizobaki zinataja URL za huduma, maana yake ambayo sasa tutazingatia.

OAuth = Leta Tokeni ya Ombi + Elekeza Uidhinishaji + Leta Tokeni ya Ufikiaji + API ya Simu

Katika mfano na GMail, tulitumia aina 2 za simu za mbali: a) kuelekeza kupitia kivinjari; b) kupata API kutoka ndani ya hati.

Na tuligundua matatizo kadhaa ya usalama, ambayo yanapendekeza kwamba kunapaswa kuwa na changamoto zaidi. Hiki ndicho kinachotokea katika OAuth: maombi zaidi ya kati huongezwa kutoka kwa hati ya Mtumiaji hadi kwa Mtoa Huduma, inayofanya kazi kwa tokeni. Hebu tuwaangalie.

  1. Inachakata uwasilishaji wa fomu. Hii si sehemu ya OAuth, lakini ni sehemu ya maombi yetu. Kabla ya kufikia Mtoa Huduma za API, ni lazima tupokee agizo la kazi kutoka kwa mtumiaji kwa kitendo hiki. Hapa kuna mfano wa "agizo" kama hilo:
  2. Leta Tokeni ya Ombi (ombi la ndani).
    • Hati ya Mtumiaji inafikia Omba URL ya tokeni Mtoa huduma: kwa mfano, api.rutvit.ru/oauth/request_token. Ombi lina ufunguo wa Mtumiaji - "kuingia kwa programu", na ombi lenyewe limetiwa saini kwa kutumia siri ya Mtumiaji - "nenosiri la programu", ambayo inalinda dhidi ya kughushi.
    • Kwa kujibu, Mtoa Huduma huzalisha na kurudisha ishara "iliyojaa takataka" inayoitwa Tokeni ya Ombi. Tutaihitaji baadaye, kwa hivyo ni lazima tuihifadhi mahali fulani - kwa mfano, katika mabadiliko ya kipindi cha $S_REQUEST_TOK.
  3. Elekeza upya kwa Uidhinishaji (kupitia uelekezaji upya kwenye kivinjari). Sasa maombi yetu yana Ishara ya kipekee ya Ombi. Inahitajika kupata ruhusa kutoka kwa mtumiaji kutumia ishara hii, i.e. muulize kuidhinisha Ombi Tokeni.
    • Mtumiaji huelekeza kivinjari kwenye maalum Idhinisha URL Mtoa huduma: kwa mfano, api.rutvit.ru/oauth/authorize. Kitufe cha Tokeni ya Ombi kinapitishwa katika vigezo.
    • Mtoa huduma anaonyesha fomu ya uidhinishaji kwa mtumiaji wake na, ikiwa ameidhinishwa, huelekeza kivinjari nyuma. Wapi hasa? Na tunaonyesha hii katika parameta ya oauth_callback.
  4. Leta Tokeni ya Ufikiaji (ombi la ndani). Kwa hivyo, kivinjari kilirudi kwa programu yetu baada ya safu ya uelekezaji upya. Hii inamaanisha kuwa idhini kwa Mtoa Huduma ilifanikiwa, na Tokeni ya Ombi inaruhusiwa kufanya kazi. Hata hivyo, katika OAuth kwa ajili ya usalama, kila tokeni ina madhumuni yake, yenye mipaka madhubuti. Kwa mfano, Tokeni ya Ombi inatumiwa tu kupokea uthibitisho kutoka kwa mtumiaji, na hakuna kitu kingine chochote. Ili kufikia rasilimali, tunahitaji kupata ishara mpya - Tokeni ya Ufikiaji - au, kama wanasema, "badilisha Tokeni ya Ombi kwa Tokeni ya Ufikiaji".
    • Mtumiaji anarejelea URL ya tokeni ya ufikiaji- kwa mfano, api.rutvit.ru/oauth/access_token - na anauliza kumpa Tokeni ya Ufikiaji badala ya Ishara ya Ombi aliyo nayo. Ombi limetiwa saini saini ya kidijitali kulingana na siri ya Ishara ya Ombi.
    • Mtoa Huduma hutengeneza na kurejesha Tokeni ya Ufikiaji iliyojaa takataka. Pia inabainisha katika majedwali yake kwamba Tokeni hii ya Ufikiaji inaruhusiwa kufikia API. Programu yetu lazima ihifadhi Tokeni ya Ufikiaji ikiwa itatumia API katika siku zijazo.
  5. Piga API (ombi la ndani). Kweli, sasa tunayo Ishara ya Ufikiaji, na tunaweza kupitisha ufunguo wake wakati wa kupiga njia za API.
    • Mtumiaji hutoa ombi kwa API ya Mtoa Huduma (kwa mfano, kwa kutumia ombi la POST kulingana na itikadi ya REST). Ombi lina Ufunguo wa Tokeni ya Ufikiaji, na limetiwa saini kwa kutumia Siri ya Pamoja ya tokeni hii.
    • Mtoa Huduma huchakata simu ya API na kurejesha data kwa programu.

Mwisho wa hati: pato la wijeti

Mwisho wa hati unapaswa kuwa wazi bila maelezo ya kina.
Orodha ya 14: Mwisho wa hati: pato la wijeti
// mwisho kesi ) ) // Pata tweets zote zinazopatikana. $text = file_get_contents("http://api.rutvit.ru/search.xml?rpp=5&q=" . urlencode("#" . TAG)); $TWEETS = new SimpleXMLelement($text); // Njia ya mkato ya kuonyesha ujumbe ulio na kumbukumbu na nukuu. kazi e($text, $quote = 1) ( $text = iconv("utf-8", ENCODING, $text); echo $quote? htmlspecialchars($text) : $text; ) ?>
hadhi kama $tweet) (?>
mtumiaji->jina_la_skrini)?>: maandishi_yameumbizwa, 0)?>
?action=form_is_sent" style="margin: 1em 0 0 0">

Viungo muhimu kwenye OAuth

  • rutvit
Ongeza vitambulisho

Kwa hivyo, programu ya mteja inayotumia API ya AdWords inaweza kufikia akaunti ya AdWords bila anwani ya barua pepe na nenosiri la mtumiaji.

Kuunda Kitambulisho cha OAuth2

Ili kuunda kitambulisho cha OAuth2, fuata hatua zilizo hapa chini.

Kufafanua Aina ya Maombi

Kwanza, unahitaji kuamua aina ya maombi, ambayo unataka kuunda. Kuna aina mbili za programu katika API ya AdWords:

  • programu inayoweza kusakinishwa(inapendekezwa);
  • programu ya wavuti.

Tumia jedwali lililo hapa chini kuamua aina ya programu unayohitaji.

Nini cha kuchagua Hali
Programu inayoweza kusakinishwa(inapendekezwa)
  • Unadhibiti akaunti zako zote za AdWords ukitumia akaunti moja ya msimamizi wa kiwango cha juu.
  • Je, ndiyo kwanza unaanza au unataka kuanza haraka?
  • Programu yako itafanya kazi na seti moja ya akaunti za AdWords zilizo na watumiaji wengi.
Programu ya wavuti
  • Unataka kutumia uthibitishaji ili kuwapa watumiaji tofauti haki tofauti za ufikiaji kwa data ya akaunti yako ya AdWords.
  • Unahitaji kuunda seti nyingi za vitambulisho, kwa mfano ili kudhibiti akaunti za watu wengine.
  • Programu yako inahitaji URL za kupigiwa simu ambazo hazitumiki katika programu zilizosakinishwa.
Makini!Hata kama unaunda programu ya wavuti, bado unaweza kuchagua programu ya kusakinisha. Tofauti kuu ni ikiwa upigaji simu unahitaji kufanywa baada ya tokeni kutolewa. Kwa mfano, ukitumia akaunti moja ya msimamizi wa ngazi ya juu ili kudhibiti akaunti zako zote za AdWords, programu unayosakinisha lazima isajiliwe, hata kama programu ya mteja inapatikana kwenye Mtandao. Kumbuka.yanajadiliwa hapa chini. Ikiwa hauhitaji utendakazi wa akaunti ya huduma, tunapendekeza sana kutumia mchakato wa uidhinishaji kwa usakinishaji au programu ya wavuti.

Kuunda kitambulisho cha mteja na msimbo wa siri

Baada ya kuamua aina ya programu yako, bofya kwenye kichupo kinachofaa hapa chini na ufuate maagizo ili kuunda Kitambulisho na Siri ya Mteja.

Programu inayoweza kusakinishwa

  1. Fungua
  2. Unda mradi Unda.
  3. Unda Kitambulisho, na kisha - Kitambulisho cha Mteja cha OAuth.
  4. Hifadhi
  5. Katika sura Aina ya maombi chagua Aina zingine na kutoa taarifa zinazohitajika.
  6. Bofya Unda.
  7. kitambulisho Na Ufunguo wa siri
Programu ya wavuti
  1. Fungua
  2. Kutoka kwa menyu kunjuzi ya miradi, chagua Unda mradi, kisha taja jina la mradi na ubadilishe kitambulisho chake ikiwa ni lazima, kisha bofya kitufe Unda.
  3. Kwenye ukurasa wa Vitambulisho, chagua Unda Kitambulisho, na kisha - Kitambulisho cha Mteja cha OAuth.
  4. Unaweza kuulizwa kutoa jina la bidhaa. Katika kesi hii, bonyeza Geuza kukufaa dirisha la ombi la ufikiaji, ingiza habari iliyoombwa na ubofye Hifadhi ili kurudi kwenye skrini ya Kitambulisho.
  5. Katika sura Aina ya maombi chagua Programu ya wavuti. Fuata maagizo ili kubainisha vyanzo vya JavaScript na/au uelekeze upya URI.
  6. Bofya Unda.
  7. Kwenye ukurasa unaoonekana, nakala kitambulisho Na Ufunguo wa siri mteja - utazihitaji wakati wa kusanidi maktaba ya mteja.

Fuata maagizo hapa chini ili kusanidi matumizi ya vitambulisho vya OAuth2 na maktaba ya mteja wa lugha yako.

Kumbuka.Ukichagua kutotumia moja ya maktaba ya mteja wetu, utahitaji kutekeleza michakato kwa ajili yako au wewe mwenyewe.

Uwanja wa michezo wa OAuth2

Chaguo mbadala la kuunda vitambulisho vya OAuth2 ni kutumia Uwanja wa michezo wa OAuth2. Kwa kuunganishwa na Dashibodi ya API ya Google, mfumo huu hukuruhusu kuunda tokeni za OAuth2 wewe mwenyewe.

Mfumo wa OAuth2 Playground umeundwa kwa ajili ya watumiaji wanaohitaji ufikiaji wa akaunti pekee moja akaunti ya msimamizi au mtumiaji wa AdWords. Ikiwa unahitaji kuuliza kitambulisho kwa watumiaji wengi, basi ni bora kutumia maktaba za mteja kama ilivyoelezwa hapo juu.

Mipangilio

Onyo.Kutumia Uwanja wa michezo wa OAuth2, unahitaji kuunda kitambulisho cha mteja Kwa . Hii wa pekee aina ya programu inayofanya kazi na OAuth2 Playground. Soma zaidi katika sehemu hapo juu.

Jinsi ya kupata kitambulisho cha mteja na ufunguo wa siri

  1. Fungua
  2. Chagua mradi uliopo kwenye menyu kunjuzi au uunde mpya.
  3. Kwenye ukurasa wa Vitambulisho, chagua Unda Kitambulisho, na kisha - Kitambulisho cha Mteja cha OAuth.
  4. Katika sura Aina ya maombi chagua Programu ya wavuti.
  5. Katika sehemu, ongeza laini ifuatayo: https://site/oauthplayground
  6. Bofya Unda.
  7. Iandike kitambulisho Na Ufunguo wa siri wateja walioonyeshwa kwenye ukurasa unaoonekana. Utazihitaji katika hatua inayofuata.

Jinsi ya kuunda ishara

Onyo.Akaunti ipi ya Google ambayo umeingia katika kivinjari chako huamua ni akaunti zipi za AdWords unazoweza kufikia kwa kutumia vitambulisho vya OAuth2 unavyounda. Huenda ikawa bora kukamilisha hatua hizi katika hali fiche au bila kuingia katika Akaunti yako ya Google. Kuna uwezekano kwamba utahitaji kutumia vitambulisho ambavyo ni tofauti na akaunti uliyokuwa nayo ulipopokea Kitambulisho cha Mteja na Ufunguo wa Siri.

Jinsi ya kuondoa Uwanja wa Michezo wa OAuth2 kutoka kwa Kitambulisho cha Mteja

Kwa kuwa tayari unayo onyesha upya ishara, huhitaji tena kutumia Uwanja wa Michezo wa OAuth2 kama URI yako ya kuelekeza kwingine iliyosuluhishwa. Ili kuondoa mfumo huu kwenye orodha, fuata hatua hizi:

  1. Enda kwa .
  2. Chagua mradi wako kutoka kwa menyu kunjuzi.
  3. Kwenye ukurasa wa Vitambulisho, chagua jina la kitambulisho cha mteja.
  4. Ondoa https://site/oauthplayground kutoka kwa uga URI zinazoruhusiwa kuelekeza kwingine. Tafadhali kumbuka kuwa lazima uondoke angalau moja Elekeza URI kwingine.
  5. Bofya Hifadhi.

Kwa hivyo una vitambulisho vyako vya OAuth. Sasa unaweza kuuliza API ya AdWords na kuitumia dhidi ya maktaba ya mteja inayohitajika.

Akaunti za huduma za OAuth2

Sehemu hii inaeleza jinsi ya kufikia API ya AdWords kwa kutumia akaunti za huduma.

Akaunti ya huduma ni akaunti ambayo ni ya programu na si ya mtumiaji binafsi. Akaunti za huduma hutoa mwingiliano kati ya programu ya wavuti na huduma ya Google. Programu yako huita API kwa niaba ya akaunti ya huduma bila kuhusisha watumiaji moja kwa moja.

API ya AdWords inaruhusu ufikiaji wa akaunti ya huduma kwenye vikoa vyote vya G Suite.

Akaunti ya huduma hutekeleza mchakato wa OAuth2, ambao badala ya kuidhinisha mtumiaji hutumia faili muhimu ambayo inapatikana kwa programu yako pekee.

Kutumia akaunti za huduma hutoa faida mbili muhimu:

  • Uidhinishaji wa ufikiaji wa programu kwa API ya Google hufanywa wakati wa awamu ya usanidi. Hii inaepuka usumbufu wa kuhitaji kuingilia kati kwa mtumiaji au tokeni za kuweka akiba katika mtiririko mwingine wa OAuth2.
  • Uigaji wa watumiaji wengine katika ombi, ikihitajika, hufanywa kama sehemu ya mchakato wa uidhinishaji wa OAuth2.
Kumbuka. Ikiwa hutumii vipengele maalum vya kikoa, kama vile uigaji, badala ya akaunti za huduma, inashauriwa sana kutumia mchakato wa . Kama sehemu ya usakinishaji wa OAuth2 na michakato ya utumaji programu ya wavuti, ushiriki wa mtumiaji unahitajika mara moja pekee - wakati wa kutoa ufikiaji wa akaunti.

Mbadala kwa akaunti za huduma

Akaunti za huduma hutumiwa sana kutoa ufikiaji wa kiprogramu kwa API kwa kutumia itifaki ya OAuth2 bila mtumiaji kuingilia kati.

Hata hivyo, kusanidi akaunti kama hizo kufanya kazi na API ya AdWords si rahisi. Mbadala rahisi zaidi iko na tokeni ya kuonyesha upya inayoendelea. Mbinu hii inaruhusu programu kuomba tokeni mpya za ufikiaji wakati wowote.

Kama sehemu ya mchakato huu, unahitaji kusanidi idhini ya maombi kupitia maktaba ya mteja kama ilivyoelezwa hapo juu. Hili linahitaji kufanywa mara moja tu kwa sababu tokeni za kuonyesha upya Google OAuth2 haziisha muda wake.

Mahitaji

  • Kikoa cha G Suite unachomiliki, kama vile mydomain.com au mybusiness.com.
  • Tokeni ya msanidi wa API ya AdWords na ikiwezekana akaunti ya majaribio.
  • kwa lugha inayotumika.

Kuweka ufikiaji wa akaunti ya mteja

Kwanza, unahitaji kuunda ufunguo wa akaunti ya huduma kwenye Dashibodi ya API ya Google.

  1. Ingia katika akaunti yako ya G Suite, fungua .
  2. Kutoka kwa menyu kunjuzi ya miradi, chagua Unda mradi, kisha toa maelezo yanayohitajika na ubofye kitufe Unda. Mradi mpya utaonekana kwenye orodha inayotumika.
  3. Kutoka kwenye menyu kwenye kona ya juu kushoto, chagua IAM na utawala, na kisha - Akaunti za huduma kwenye menyu upande wa kushoto.
  4. Bofya Unda akaunti ya huduma juu ya ukurasa.
  5. Ingiza jina la akaunti ya huduma.
  6. Angalia kisanduku Unda ufunguo mpya wa faragha na uchague aina ya ufunguo wa JSON.
  7. Angalia kisanduku Washa majukumu ya kufikia data katika kikoa chako cha G Suite na upe jina la bidhaa kwa dirisha la ombi la ufikiaji.
  8. Bofya Unda. Faili ya ufunguo wa JSON itaanza kupakua. Hifadhi faili mahali salama ambapo unaweza kufikia tu.
  9. Kwenye ukurasa Akaunti za huduma akaunti mpya ya huduma itaonekana.
Kumbuka. Kwa sababu uigaji wa mtumiaji unaweza kudhibitiwa pekee Katika kiwango cha kikoa, ili kutumia akaunti za huduma na mchakato wa kuidhinisha na huduma za Google OAuth2, utahitaji kikoa chako mwenyewe kisajiliwe na G Suite. Watumiaji wote wa kikoa wanaotumia akaunti ya huduma iliyo na ruhusa zinazofaa wanaweza kuiga mtumiaji yeyote wa kikoa.

Masuala ya usalama

Kwa sababu G Suite inadhibitiwa katika kiwango cha kikoa, ni lazima ulinde kwa usalama faili muhimu inayoruhusu akaunti zilizoidhinishwa kufikia huduma za Google. Hii ni muhimu hasa kutokana na ukweli kwamba tunatoa akaunti ya huduma na uwezo wa kuiga mtumiaji yeyote wa kikoa.

Kwa kuongeza, inashauriwa kuwa kila akaunti ya huduma iwe na ufikiaji wa API moja tu ya Google. Shamba hutumiwa kwa hili upeo, ambayo imeelezwa katika sehemu inayofuata. Hatua hii ya uzuiaji hukuruhusu kuweka kikomo cha data iliyofunguliwa kwa ufikiaji usioidhinishwa ikiwa faili muhimu itaathiriwa.

Jinsi ya kutoa uwezo wa uigaji

Ili kutoa uwezo wa uigaji kwa akaunti ya huduma, fuata hatua hizi:

Sasa unaweza kufikia akaunti yako ya AdWords kwa kutumia akaunti yako ya huduma kama sehemu ya mchakato wa kuidhinisha OAuth2.

Kuanzisha maktaba ya mteja

Chagua lugha ili kuona maagizo ya kusanidi maktaba ya mteja.

Kumbuka.Ukichagua kutotumia mojawapo ya maktaba ya mteja wetu, utahitaji kutekeleza mchakato huo wewe mwenyewe.

Kuboresha maombi ya OAuth2

Ikiwa programu yako haitumii kushiriki vitambulisho, inaweza kuongeza kwa kiasi kikubwa idadi ya maombi yanayotumwa kwa Google. Matokeo yake, seva zetu zinaweza kuweka vikwazo kwenye programu hiyo, ambayo itapunguza kasi ya uendeshaji wake.

Sehemu hii inaeleza jinsi ya kuboresha usimamizi wa kitambulisho cha OAuth2 ili programu yako ishirikiane kwa ufanisi zaidi na API ya AdWords.

Makini!Chini ya muda sifa Hii inarejelea seti nzima ya sifa za kitambulisho za OAuth2, ikijumuisha tokeni ya ufikiaji na tarehe yake ya mwisho wa matumizi.

Mikakati ya usambazaji wa kitambulisho

Kusambaza vitambulisho kote kwenye maombi ya API huboresha utendakazi na pia huepuka juu na hitilafu kutokana na ukiukaji wa vikwazo.

Mkakati wa usambazaji wa kitambulisho unategemea muundo wa programu.

Katika programu zenye nyuzi nyingi, lazima utumie kitambulisho sawa kwa kila kipindi cha mazungumzo.

Katika michakato mingi na maombi yaliyosambazwa, ni muhimu kutekeleza baadhi ya miundombinu ya kupitisha sifa kati ya michakato. Kwa kuongeza, lazima uhakikishe kuwa nyuzi hazizuii na hali ya mbio hutokea.

Katika programu ambayo ina michakato mingi/iliyosambazwa na yenye nyuzi nyingi, kila mchakato unahitaji kuchanganya mikakati yote miwili.

Ifuatayo ni mikakati ya kuthibitisha akaunti moja ya AdWords, kama vile akaunti ya msimamizi wa ngazi ya juu katika daraja.

Kisha inaelezea jinsi ya kurekebisha mikakati hii kwa .

Programu zenye nyuzi nyingi

Katika programu zenye nyuzi nyingi, vitambulisho lazima vipatikane kwa nyuzi tofauti. Masasisho ya kitambulisho lazima yafanywe kwa usawa ili kuepuka hali za mbio.

Mchoro huu unaonyesha nyuzi zinazopitisha maombi kwa API ya AdWords wakati wa utekelezaji. Dimbwi la pamoja la vikao (watumiaji) hutumiwa. Kumbuka kwamba kila kipindi lazima kitumie kitu sawa cha vitambulisho. Kwa kujibu kila ombi la API, thread inapokea kikao sambamba (mtumiaji). Ikiwa ishara ya ufikiaji inahitaji kuonyeshwa upya, lazima ifanywe kwa usawa ili kuepusha hali ya mbio. Kwa maneno mengine, kitu cha sifa lazima kiwe salama.

Maktaba za wateja hurahisisha kupitisha vitambulisho kati ya nyuzi. Kila maktaba ya mteja ina kitu cha kikao (au mtumiaji) chenye vitambulisho ambacho hutumia tena katika kipindi chake chote cha maisha. Ili kutumia vitambulisho katika vipindi vyote, ni lazima uvitumie unapounda kila kipindi. Katika maktaba zote za mteja, kitambulisho ni kitu kisicho na uzi ambacho husasishwa kwa usawa wakati tokeni ya ufikiaji inaisha.

Kwa mfano, katika maktaba ya mteja wa Java ungeunda darasa la Sifa la singleton na uitumie kwa vipindi vyote.

Multiprocess na kusambazwa maombi

Katika michakato mingi na maombi yaliyosambazwa, usambazaji wa kitambulisho lazima uendelee. Ili kuepuka hali ya mbio ambapo seva nyingi hujaribu kusasisha vitambulisho kwa wakati mmoja (kusababisha maombi mengi ya sasisho), inashauriwa kulazimisha sasisho na kutoa vitambulisho vilivyosasishwa kwa michakato na seva zote.

Kwa mfano, kazi au huduma moja inaweza kusasisha kitambulisho mara kwa mara na kuvisukuma kwenye hifadhi ya data ambapo vitatumiwa na seva tofauti.

Mchoro unaonyesha uppdatering wa mara kwa mara wa vitambulisho na kurekodi mali zao kwenye hifadhi ya data. Seva zote kisha hupokea kitambulisho kabla ya kutuma ombi kwa API.

Sasisha kazi

Kazi ya kusasisha mara kwa mara husasisha kitambulisho na kuzituma kwenye hifadhi ya data. Jukumu hili lisisubiri muda wa stakabadhi za sasa kuisha, kwani hii itasababisha maombi kuwa chini kwa muda kutokana na ukosefu wa vitambulisho halali.

Mbadala bora ni kulazimisha uonyeshaji upya wa mara kwa mara, ambao huchukua nafasi ya kitambulisho kwenye duka la data na mpya kila wakati. Kazi ya kusasisha inapaswa kufanywa vizuri kabla ya muda wa kitambulisho cha sasa kuisha ili kuwe na muda wa kutosha endapo hitilafu ya muda itatokea. Unaweza kuanza kwa kusasisha kila baada ya dakika 15.

Kumbuka.Ikiwa tokeni ya ufikiaji ya kitambulisho itaisha wakati ombi la API linachakatwa, ombi bado litatekelezwa. Kwa mfano, ukiunda swali la muda mrefu na umesalia na chini ya dakika moja kufikia, matokeo bado yatarejeshwa.

Hifadhi ya data

Hifadhi ya data hutumiwa kutoa vitambulisho kwa michakato na seva tofauti.

Ili kufanya hivyo, unaweza kutumia ghala la data lililopo au kuunda maalum ambayo seva zitapokea vitambulisho. Suluhu zinazowezekana ni pamoja na seva za kuweka akiba (kama vile Memcached au Infinispan) na hifadhi za data za NoSQL (kama vile MongoDB).

Kusudi kuu la ghala la data ni kutoa kiolesura cha kuaminika kwa seva zote zinazofikia API. Uendeshaji wake unahitaji kuboreshwa ili kusoma data kwa haraka: seva na michakato itasoma kitambulisho mara nyingi zaidi kuliko kusasishwa.

Kumbuka kuweka kitambulisho chako salama.

Unapohifadhi kitambulisho, lazima uhifadhi mali ya expiry_time (muda wa sasa + expires_in) na refresh_token pamoja na access_token sifa. Sifa ya muda wa kuisha (tarehe ya kuisha kwa tokeni) inakokotolewa kwa kutumia fomula ifuatayo: muda wa ombi la kusasisha tokeni ya ufikiaji + na kuisha_kwa wakati (tarehe ya kuisha kwa tokeni).

Dimbwi la seva

Kila seva kwenye bwawa hupata kitambulisho cha hivi punde kutoka kwa hifadhi ya data kabla ya kutuma ombi. Mradi tu kazi ya kusasisha inaendeshwa kwa mafanikio, vitambulisho vitakuwa halali. Hata hivyo, ikiwa kazi ya kusasisha au hifadhi ya data itashindwa, lazima kuwe na utaratibu mbadala.

Ikiwa seva au mchakato hauwezi kupata kitambulisho kutoka kwa hifadhi ya data, au ikiwa kitambulisho kimekwisha muda wake, seva lazima isasishe kitambulisho chake ili kuruhusu programu kuendelea kufanya kazi na API hadi tatizo litatuliwe.

Katika michakato yenye nyuzi nyingi, lazima utumie mkakati sawa wa kusambaza vitambulisho kati ya nyuzi.

Uthibitishaji wa Akaunti Nyingi

Kitambulisho kilichoundwa kwa ajili ya akaunti ya msimamizi wa AdWords kinaweza kutumika kufikia akaunti zote za watoto. Watumiaji walio na akaunti moja ya msimamizi kwa kawaida huhitaji tu kuunda stakabadhi za akaunti ya msimamizi wa ngazi ya juu ili kuidhinisha programu kwa akaunti zote za chini za AdWords.

Katika hali nyingine, programu inahitaji ufikiaji wa akaunti za AdWords ambazo hazihusiani na safu ya akaunti ya msimamizi. Hali hii inakuhitaji kuunda na kudumisha vitambulisho vingi vya akaunti tofauti, kama vile kwa kila akaunti ya mteja wa AdWords ambayo unaweza kufikia, au kwa kila akaunti ya msimamizi wa ngazi ya juu katika safu huru.

Unaweza kushikamana na mikakati hii kwa programu zote mbili na mabadiliko madogo. Unapotumia hifadhi iliyoshirikiwa, vitambulisho lazima vionyeshwe na kitambulisho cha mteja cha akaunti ili kuhakikisha kuwa kitambulisho kinahusishwa na akaunti unayotaka. Kwa kuongeza, kazi ya sasisho lazima isasishe kwa wakati. Baada ya kuunganisha akaunti mpya, huenda ukahitaji kuizindua.

Mwishowe, katika programu zenye nyuzi nyingi, unahitaji kusambaza kitu cha sifa tu kati ya nyuzi zinazoendesha kwenye akaunti ambayo inahusishwa.

Jinsi OAuth2 inavyofanya kazi

Kumbuka. API ya AdWords bado haiauni kuingia kwa wakati mmoja kupitia ombi la ufikiaji wa data (muundo mseto) au uwakilishi wa ngazi ya kikoa (2LO).

Upeo

Tokeni ya ufikiaji inaweza kutoa viwango tofauti vya ufikiaji wa data. Kigezo cha upeo wa kutofautiana kinafafanua seti ya rasilimali na shughuli ambazo ishara hutoa ufikiaji. Unapoomba tokeni ya ufikiaji, programu yako hutuma thamani moja au zaidi kwa kigezo cha upeo.

Ifuatayo ni upeo wa sasa na urithi wa API ya AdWords.

Ufikiaji wa nje ya mtandao

Programu ya mteja inayotumia API ya AdWords kwa kawaida huomba ufikiaji wa nje ya mtandao. Hili linaweza kutokea ikiwa programu yako inahitaji kufanya kazi za kundi wakati mtumiaji anavinjari tovuti yako bila muunganisho wa Mtandao.

Programu zilizosakinishwa hutumia ufikiaji wa nje ya mtandao kwa chaguo-msingi.

Kichwa cha ombi la HTTP

Kichwa cha HTTP katika kila ombi kwa seva ya API ya AdWords lazima iwe na fomu ifuatayo:

Uidhinishaji: Mmiliki THE_ACCESS_TOKEN

POST ... HTTP/1.1 Seva pangishi: ... Uidhinishaji: Mwenye 1/fFAGRNJru1FTz70BzhT3Zg Aina ya Maudhui: text/xml;charset=UTF-8 Urefu wa Maudhui: ...

Fikia na onyesha upya tokeni

Mara nyingi, tokeni ya kuonyesha upya inahitaji kuhifadhiwa mahali salama kwa sababu inaweza kuhitajika baadaye. Kwa maelezo zaidi kuhusu kuomba ufikiaji na kuonyesha upya tokeni, angalia miongozo ifuatayo:

Wakati tokeni ya ufikiaji inaisha

Tokeni ya ufikiaji ina tarehe ya mwisho wa matumizi ambayo inategemea thamani ya expires_in . Tokeni ya ufikiaji ambayo muda wake umeisha inaweza kuonyeshwa upya kwa kutumia tokeni ya kuonyesha upya, lakini maktaba za wateja wetu hufanya hivyo kiotomatiki.

Isipokuwa kama ilivyobainishwa vinginevyo, maudhui ya ukurasa huu yameidhinishwa chini ya Leseni ya Creative Commons Attribution 3.0, na sampuli za msimbo zimeidhinishwa chini ya Leseni ya Apache 2.0. Kwa maelezo, tazama yetu. Java ni chapa ya biashara iliyosajiliwa ya Oracle na/au washirika wake.

Ilisasishwa Septemba 24, 2018