ΠΠΎΡΠ΅ΠΌΡ oauth, Π° Π½Π΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ Β«Π²ΠΎΠΉΡΠΈ ΡΠ΅ΡΠ΅Π·Β»?
ΠΠ΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΡΠ»ΠΈ Π²Π°Ρ ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π», Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΈ ΡΡΠΎΠ²Π΅Π½Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° β ΡΠΎ Π΅Π³ΠΎ Π²ΠΎΡΠΊΠ½ΡΡΡ Π² ΠΊΠΎΠ΄ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ β ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π°Π»ΡΡΠ΅ Π½Π΅ ΡΠΈΡΠ°ΡΡ.
ΠΠΎΡΠ΅ΠΌΡ oauth, Π° Π½Π΅ openid?
ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ OpenID ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ ΡΠ΅Ρ ΡΠ΅Π»Π΅ΠΉ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠΎΠ²Π°Π½. ΠΡΠΎ ΡΡΠ³ΡΠ±ΠΎ ΠΌΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅, Π½ΠΎ ΠΎΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Π΅ΡΡΡ Π½Π΅ Π½Π° ΠΏΡΡΡΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ.
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , OpenID ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Β«Π³ΠΈΠΊΠΈΒ», ΠΏΡΠΎΡΠ΅Π½Ρ ΠΊΠΎΡΠΎΡΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ Π½Π΅ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π²ΡΡΠΎΠΊ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΏΠΎΠ΄ Π½ΠΈΡ ΡΠ°ΠΉΡΡ (Π·Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ, ΡΠ°Π·ΡΠΌΠ΅Π΅ΡΡΡ π ) ΠΠΎΡΠ΅ΠΌΡ ΡΠ°ΠΊ? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ OpenID Π°ΠΊΠΊΠ°ΡΠ½Ρ, Π½Π°Π΄ΠΎ β Π΅Π³ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ.
ΠΠ°ΠΉΡΠΈ Π½Π° OpenID ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π΅ΠΊΠΈΠΉ, Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π½Π΅Π²ΡΠ°Π·ΡΠΌΠΈΡΠ΅Π»ΡΠ½ΡΠΉ, Π½Π°Π±ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΠΎΡΠΎΡΡΠΉ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ (Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ) Π½Π°Π΄ΠΎ Π½Π΅ Π·Π°Π±ΡΡΡ ΠΈ Π²Π²ΠΎΠ΄ΠΈΡΡ ΠΏΡΠΈ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π½Π° Π³Π»Π°Π·Π° ΠΏΠΎΠΏΠ°Π΄Π΅ΡΡΡ Π·Π½Π°ΠΊΠΎΠΌΠ°Ρ ΠΏΠΈΠΊΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
. ΠΡ ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠ°Π·ΡΠ°Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ? Π Ρ OAuth Π²ΡΠ΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ β Π²ΠΈΠ΄ΠΈΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΊΠ½ΠΎΠΏΠΊΡ Β«ΠΠΎΠΉΡΠΈ ΡΠ΅ΡΠ΅Π· ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅Β», Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ, ΠΈβ¦ ΡΠΆΠ΅ Π½Π° ΡΠ°ΠΉΡΠ΅ Ρ ΠΏΡΠ°Π²Π°ΠΌΠΈ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Β«ΠΡΠ΄ΡΡΠ΅ ΠΏΡΠΎΡΠ΅Β», β Π³ΠΎΠ²ΠΎΡΠΈΠ» ΠΊΠ»Π°ΡΡΠΈΠΊ, β Β«ΠΈ Π»ΡΠ΄ΠΈ ΠΊ Π²Π°ΠΌ ΠΏΠΎΡΡΠ½ΡΡΡΡΒ». ΠΠ°ΠΊ Π² Π²ΠΎΠ΄Ρ Π³Π»ΡΠ΄Π΅Π».
ΠΠΎ-Π²ΡΠΎΡΡΡ , Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ OAuth Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΈΡΡΠ΅ΡΠΏΡΠ²Π°ΡΡΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ. ΠΠΎΠ»ΡΡΠΈΠ² Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠΊΠ΅Π½, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΡΠΎΡΠΈΠ°Π»ΠΊΠΈ Π² ΡΠ²ΠΎΠΉ ΡΠ΅ΡΡΡΡ β ΡΡΠ΅Π½ΠΈΠ΅/Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠΎΡΡΠΎΠ², Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΠ΅Π½Π΄Π»Π΅Π½ΡΠ΅ ΠΈ ΡΡΠ΅Π½Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
Π-ΡΡΠ΅ΡΡΠΈΡ , OpenID Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΏΠ°ΠΌΠ΅ΡΡ ΠΈ Ρ Π°ΠΊΠ΅ΡΡ. ΠΠ°ΡΠ°ΡΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ OpenID Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π½Π° ΡΠ΅ΡΡΡΡΠ΅ Π΄Π΅Π»Π°Π΅ΡΡΡ Π±Π΅Π· ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΊ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌ Π΅Π³ΠΎ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠΌ β ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Π½Π° OpenID-ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ΅ ΠΈΠ»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΠΊΠ΅ΠΌ ΠΈ ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
Π ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ°ΠΉΡΡ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ ΡΠΎ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΠΏΠΎ OpenID Π²Π²ΠΎΠ΄Π° ΠΊΠ°ΠΏΡΠΈ. Π Π½ΠΈΡΡΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΡ ΠΏΠΎΠ΄Π½ΡΡΡ ΡΠ²ΠΎΠΉ OpenID-ΡΠ΅ΡΠ²Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ Π»ΡΠ±ΠΎΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΈ Π½Π°ΡΠ°ΡΡ ΡΠΏΠ°ΠΌΠΈΡΡ Π΄ΠΎΠ²Π΅ΡΡΠΈΠ²ΡΠΉ ΡΠ°ΠΉΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ³Π΅Π½Π΅ΡΠ΅Π½Π½ΡΠΌΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, OpenID Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, Π² ΡΡΡΠ½ΠΎΡΡΠΈ, Π½Π΅ Π΄Π°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π³Π°ΡΠ°Π½ΡΠΈΠΉ ΠΊΠ»ΠΈΠ΅Π½ΡΡ. ΠΠ½Π° ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ Π»ΠΈΡΡ, ΡΡΠΎ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· OpenID-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² β ΠΈ Π²ΡΠ΅. ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ (email, ΠΈΠΌΡ, Π²ΠΎΠ·ΡΠ°ΡΡ) ΠΈΠΌΠ΅ΡΡΡΡ, Π½ΠΎ ΠΌΠ°Π»ΠΎ ΠΊΠ΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ.
ΠΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π² Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅ΠΉ OpenID, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΈ Π΄ΠΎΠ²Π΅ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ OpenID-ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ°ΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠΎΡΠΈΠ°Π»ΠΊΠ°ΠΌ). ΠΠΎ ΡΠΌΡΡΠ», Π΅ΡΠ»ΠΈ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ ΠΈΠ· Π½ΠΈΡ (Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΠ, Π½ΠΎ ΠΎΠ½ ΠΈ ΠΏΠΎ OpenID ΡΠΎΠ²Π½ΡΠΌ ΡΡΠ΅ΡΠΎΠΌ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅Ρ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅)
1. ΠΠ΄Π΅ΠΌ
. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠ° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ API access Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ Β«Create an OAuth2 client IDΒ».
ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ client_id(Client ID) ΠΈ secret_key(Client Secret).
2. ΠΠΎΠ΄ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²ΠΈΠ΄Π°:
ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ°ΠΉΡ ΠΎΠ΄Π½ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠΈ ΡΠ΅ΡΠ΅Π· curl (php) Π² ΠΎΠ±Ρ ΠΎΠ΄ api |
ΠΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠΊΡΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΈΠ»ΠΈ Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π»Ρ ΡΠ΅Π³ΠΎ π
$user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) ' . 'Gecko/20221203 Firefox/3.6.13 ( .NET CLR 3.5.30729)'; $login = 'Π»ΠΎΠ³ΠΈΠ½'; $password = 'ΠΏΠ°ΡΠΎΠ»Ρ'; $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookie.txt'); curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt'); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_URL, 'http://www.odnoklassniki.ru/dk?cmd=AnonymLogin&st.cmd=anonymLogin&tkn=941'); $post = array( 'st.redirect' => '', 'st.posted' => 'set', 'st.email' => $login, 'st.password' => $password, 'st.screenSize' => '', 'st.browserSize' => '', 'st.flashVer' => '' ); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post)); $answer = curl_exec($ch); // Π² ΠΎΡΠ²Π΅Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π³Π»Π°Π²Π½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ echo $answer; curl_close($ch);
ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ΄Π½ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠ°Ρ ΡΠΎΠ·Π΄Π°Π½ΠΎ!
ΠΠΎ ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠ΅Π· Π½Π΅Π³ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ email ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΈΡΠ»Π°ΡΡ id ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ ΠΈΠ· ΠΏΠΈΡΡΠΌΠ°) ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ Π½ΡΠΆΠ½ΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΊΠ΅ΠΉΡΠ° ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π° Π°Π΄ΡΠ΅Ρ
ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅
1. ΠΠ΄Π΅ΠΌ
. Π’ΠΈΠΏ β Β«ΠΠ΅Π±-ΡΠ°ΠΉΡΒ». ΠΠ²ΠΎΠ΄ΠΈΠΌ Π±Π°Π·ΠΎΠ²ΡΠΉ Π΄ΠΎΠΌΠ΅Π½ ΠΈ Π°Π΄ΡΠ΅Ρ ΡΠ°ΠΉΡΠ°. ΠΠ° ΡΡΡΠ°Π½ΠΈΡΠ΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ client_id (ID ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ) ΠΈ secret_key (Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΠΉ ΠΊΠ»ΡΡ).
2. ΠΡΡΠΊΠ°Π΅ΠΌ Π² ΠΊΠΎΠ΄ ΠΊΠ½ΠΎΠΏΠΊΡ Π²ΠΈΠ΄Π°
ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΡΡΠ»ΠΊΠΈ Π΄Π»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ°ΠΉΠ» ok.php Π² ΠΏΠ°ΠΏΠΊΠ΅Β social_login ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π² Π½Π΅Π³ΠΎ ΠΊΠΎΠ΄:
ΠΠ°ΠΊ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠΎΠ²?
ΠΠ»ΡΡ Π΄ΠΎΡΡΡΠΏΠ° (
access_token
) Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°, ΠΏΠΎΡΠ»Π΅ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΡΠΎΡ ΠΊΠ»ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ΄Π΅ΡΠ½ΡΡΡ ΠΈΠ· Π°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ API.
ΠΠΎΡ Π½Π° ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ Π²Π΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ.
1. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ Π°Π΄ΡΠ΅Ρ Π΄Π»Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ°Π±Π»ΠΎΠ½Π° (Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ, Ρ ΡΠ°Π·Π±ΠΈΠ» Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ, ΡΡΠΎΠ±Ρ Π²Π»Π΅Π·Π»ΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½ ΡΠΊΡΠ°Π½):
https://connect.ok.ru/oauth/authorize?client_id={clientId}&scope={scope}&
response_type=token&redirect_uri={redirectUri}&
layout={layout}&state={state}
response_type=token
, ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠ²Π΅Ρ ΠΠ΄Π½ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠΈ Π²Π΅ΡΠ½ΡΠ»
access_token
Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ (
hash
) ΡΡΡΠ°Π½ΠΈΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°.
ΠΠΌΠ΅ΡΡΠΎ {clientId} Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
{scope} – ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ°, ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ. ΠΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ: VALUABLE_ACCESS;PHOTO_CONTENT
, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΡΠΈΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
{redirectUri} – ΡΡΡΠ°Π½ΠΈΡΠ° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΊΠΎΠ΄ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠ΄ JavaScript), ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ·Π²Π»Π΅ΡΠ΅Ρ ΠΈΠ· Π°Π΄ΡΠ΅ΡΠ° ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΊΠ»ΡΡ Π΄ΠΎΡΡΡΠΏΠ°, Π½Ρ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΈΡΡΠ°ΡΠΈΡ, Π΅ΡΠ»ΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΠΊΠ°ΠΊΠ°Ρ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡΠΊΠ°ΠΆΠ΅ΡΡΡ Π΄Π°Π²Π°ΡΡ ΠΏΡΠ°Π²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
{layout} – ΡΠΈΠΏ ΠΎΠΊΠ½Π°, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ m – ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΠΈΠ»ΠΈ a – ΡΠΏΡΠΎΡΠ΅Π½Π½ΠΎΠ΅.
{state} – ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π»ΡΠ±ΠΎΠ΅ ΡΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°. ΠΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΡΠ΅ΡΡΠΈΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ, Π»ΠΈΠ±ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ (Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ) ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ. ΠΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ.
Π ΠΈΡΠΎΠ³Π΅ Π°Π΄ΡΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΈΠΌ (Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ):
https://connect.ok.ru/oauth/authorize?client_id=000000000&
scope=VALUABLE_ACCESS;PHOTO_CONTENT&response_type=token&
redirect_uri=https://localhost/auth_result.html&layout=m
ΠΠ° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ
https://localhost/auth_result.html
Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² (ΡΠΌ. ΠΏ2).
2. Π‘Π΄Π΅Π»Π°ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° (redirect_uri) ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ° Π΄ΠΎΡΡΡΠΏΠ° ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΡΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ (response_type=token), ΡΠ΅ΡΠ²Π΅Ρ ΠΠ΄Π½ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠΈ Π²Π΅ΡΠ½Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΎΡΠ²Π΅ΡΠ° Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° (hash) Π² URL, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ window.location.hash:
<script>
alert(window.location.hash);
// Π±Π΅ΡΠ΅ΠΌ hash ΠΈΠ· url ΠΈ ΡΠ°Π·Π±ΠΈΠ²Π°Π΅ΠΌ Π½Π° ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Ρ &
var params = window.location.hash.substr(1).split('&');
// ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ²
for (var i = 0; i < params.length; i )
{
// ΡΠ°Π·Π±ΠΈΠ²Π°Π΅ΠΌ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ² Π½Π° Π½ΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎ Π·Π½Π°ΠΊΡ =
var p = params[i].split('=');
// Π½Π° Π²ΡΡ
ΠΎΠ΄Π΅ Π±ΡΠ΄Π΅Ρ Π΄Π²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
// ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΠΈΠΌΡ ΠΊΠ»ΡΡΠ°
if (p[0] == 'access_token')
{
// ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
alert('ΠΠ°ΡΠ»ΠΈ ΠΊΠ»ΡΡ Π΄ΠΎΡΡΡΠΏΠ°: ' p[1]);
}
}
</script>
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
ΠΡΠ»ΠΈ ΠΊΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Ρ Π²ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ, ΡΠΎ ΡΠΌ. ΡΡΡΠ»ΠΊΠΈ Π²ΡΡΠ΅. Π Π²ΠΊΡΠ°ΡΡΠ΅ β ΡΠ°ΠΊ:
ΠΠ΄Π½ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠΈ
1. Π Π΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΠΌΡΡ ΠΊΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ
. ΠΠ΄Π΅ΠΌ
ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π·Π°ΡΠ²ΠΊΡ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ OAuth Π΄ΠΎΡΡΡΠΏΠ°. Π-Π΄Π°. ΠΠ°ΡΠ²ΠΊΠ°, ΠΏΠΎΡ ΠΎΠΆΠ΅, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Π²ΡΡΡΠ½ΡΡ. ΠΡΠ»ΠΈ ΠΎΡΠ²Π΅ΡΠ° Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ Π½Π΅Ρ, ΠΏΠΈΠ½Π°Π΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΏΠΎ ΡΠΎΠΌΡ ΠΆΠ΅ Π°Π΄ΡΠ΅ΡΡ. Β«ΠΠ΄Π½ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠΈΒ», ΡΡΠΎ ΡΡΡ ΡΠΊΠ°ΠΆΠ΅ΡΡ…
2. ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠΈΡΡΠΌΠΎ Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ ΠΈ, ΡΠ»Π΅Π΄ΡΡ ΠΈΠΌ, Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠΎΡΠΌΡ.
ΠΡΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠ΅ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΠ»Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Ρ ΠΊ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ°ΠΆΠΈΠΌΠ°Π΅ΠΌ Β«Π‘ΠΎΡ
ΡΠ°Π½ΠΈΡΡΒ» ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠΈΡΡΠΌΠΎ Π½Π° ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π΅ΠΌΠ°ΠΉΠ», ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π΅ client_id(Application ID), public_key(ΠΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ) ΠΈ secret_key(Π‘Π΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ)
3. ΠΠΎΠ΄ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²ΠΈΠ΄Π°:
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ
Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π°Π΄ΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² ΡΠΎΡΡΠ΅ΡΠΈ, Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ Π°ΠΊΠΊΠ°ΡΠ½Ρ, Π½Ρ ΠΈ Π²ΡΡ ΡΠ°ΠΊΠΎΠ΅. ΠΠ΅ ΡΠΎΡΠΎΠΏΠΈΡΡΡΡ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ° Π½Π΅ ΡΡΠ°Π·Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ ΠΎΡ ΡΠ²Π΅ΠΆΠ΅Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ OAuth-ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ². ΠΠ΄Π΅ΡΡ Ρ ΡΠ°ΡΠΏΠΈΡΠ°Π» ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΏΠ΅ΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ, Π·Π°Π±ΡΠ²Π°ΡΡ ΠΏΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΎΡΠΈΠ±ΠΎΠΊ β Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΡΡΠΎΠΈΡ.
Π’Π°ΠΊΠΆΠ΅ Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΡΠ΄Π΅Π»ΠΈΠ» Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ Π°ΡΠΏΠ΅ΠΊΡΠ°ΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ β ΡΡΠΎ ΡΠ΅ΠΌΠ° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ. ΠΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² callback-url Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ β ΡΡΠΎ ΡΡΠΎΠΈΡ Π΄Π΅Π»Π°ΡΡ (ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ callback Π°Π΄ΡΠ΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π° ΠΌΠ΅Π½ΡΡΡΡΡ β ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΠΈΠ½Π°ΡΠ΅ ΡΠ΅ΡΠ²Π΅Ρ Π½Π΅ ΠΏΡΠΎΠΏΡΡΡΠΈΡ Π·Π°ΠΏΡΠΎΡ.
Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎ ΡΡΠΎΠΉ ΡΡΡΠ»ΠΊΠ΅. ΠΠ°Π»Π΅Π΅ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π½Π° “ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ oAuth”Β ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠΎΡΠΌΡ.
ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΡΡΡ ΠΊ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 128×128. Π£ΠΊΠ°ΠΆΠΈΡΠ΅ ΡΠ°ΠΊ ΠΆΠ΅Β Π‘ΠΏΠΈΡΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΡΠ½Π½ΡΡ redirect_uri,Β ΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ ΡΡΡΠ»ΠΎΠΊ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ OAuth (ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ redirect_uri).
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΈ Π²ΠΈΠ΄ΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ ΡΠΎΠ΄Π°Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΠΏΠΎΡΡΡ ΠΈ Π²ΠΈΠ΄ΠΈΠΌ ΡΠ°ΠΌ ΠΏΠΈΡΡΠΌΠΎ ΠΎΡ ΠΠ΄Π½ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠΎΠ², Π² ΠΊΠΎΡΠΎΡΠΎΠΌ:
Π¨Π°Π³ 2. Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΡΡΠ»ΠΊΠΈ Π΄Π»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ
ΠΠ»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΡΡΠ»ΠΊΠΈ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π°Π΄ΡΠ΅Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
Π¨Π°Π³ 3. ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Π°
ΠΠ°ΡΠΈΠ½Π°ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΊ Π½Π°ΠΌ ΠΏΡΠΈΡΡΠ» ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ code. ΠΠ½ Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΎΠΊΠ΅Π½ Π΄ΠΎΡΡΡΠΏΠ°, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ, Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ, ΠΌΡ Π΄ΠΎΡΡΠ°Π½Π΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅.
Π ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΡΠ½ΠΎΠ²Π° ΡΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°. ΠΠ°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ: `code` – url ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΠΏΡΠΈΡΠ΅Π΄ΡΠΈΠΉ ΠΎΡ ΠΎΠ΄Π½ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠΎΠ²; `redirect_uri` – ΡΡΡΠ°Π½ΠΈΡΠ°, Π½Π° ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΡΠ½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ; `grand_type`, ΡΠ°Π²Π½ΡΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΡ “authorization_code” – ΠΊΠΎΠ΄ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ; `client_id` – id ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ; `client_secret` – ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ:
Π¨Π°Π³ 4. ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅
ΠΡΠ°ΠΊ, ΡΠ΅ΠΏΠ΅ΡΡ ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ access_token, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Π·Π°ΠΏΡΠΎΡ ΠΊ ΠΠ΄Π½ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠΈ API ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅. ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠΌ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΠΌ Π² ΡΡΠ°Π³ΠΌΠ΅Π½Ρ url ΡΡΡΠΎΠΊΠΈ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ `ΠΏΠΎΠ΄ΠΏΠΈΡΡ` Π·Π°ΠΏΡΠΎΡΠ° $sign Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΠΈ Π΄Π²ΡΡ Ρ ΡΡΠ΅ΠΉ md5;
Π ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ method Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° API ΠΠ΄Π½ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π²Π΅ΡΠ½ΡΡ Π½Π°ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅; ΠΠ°Π»Π΅Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ access_token, ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ (application_key), ΡΠΎΡΠΌΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ (format) ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡ Π·Π°ΠΏΡΠΎΡΠ° (sig).
Π¨Π°Π³ 6. ΠΈ ΡΠ½ΠΎΠ²Π° Π΄Π΅Π»ΠΎ Π·Π° Π²Π°ΠΌΠΈ
Π’ΡΡ Π²ΡΡ, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅. ΠΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠ°ΠΊ ID ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π΅Π³ΠΎ Π½Π°Π»ΠΈΡΠΈΠ΅ Π² Π½Π°ΡΠ΅ΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΡΠ°ΠΊΠΈΠΌ ID Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΡΠΎ Π·Π½Π°ΡΠΈΡ ΠΎΠ½ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π»ΡΡ Ρ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΡΠ° Π²ΠΏΠ΅ΡΠ²ΡΠ΅, ΠΈ ΠΌΡ Π²Π½Π΅ΡΡΠΌ Π΅Π³ΠΎ Π² Π±Π°Π·Ρ.
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ, Π²ΡΡ ΡΡΠΎ Π½Π°ΠΌ ΠΎΡΡΠ°Π»ΠΎΡΡ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΠ°ΠΊ ΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅ΡΡΠΈΡ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π² Π½Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π½Π°ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅.
ΠΠ° ΡΡΡΠ°Π½ΠΈΡΠ΅ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΡΠ΅ΡΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ unset.
Π―Π½Π΄Π΅ΠΊΡ
1. ΠΠ΄Π΅ΠΌ