рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ VKontakte рддреГрддреАрдп-рдкрдХреНрд╖ рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ, рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рддреИрдпрд╛рд░ рд╡рд┐рдЬреЗрдЯ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐,
рдУрдкрди рдПрдкреАрдЖрдИ рднреА
рд╣реИ , рдЬреЛ рди рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╡реАрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (
рд╡реАрдХреЗ рдПрдкреАрдЖрдИ ) рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХрд┐рд╕реА рднреА рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЖрдЗрдП рдУрдкрди рдПрдкреАрдЖрдИ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЫреЛрдЯрд╛ рдЧреЗрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╣рдо "рдореЗрдореЛрд░реА" рдЧреЗрдо рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рджреЗрдВрдЧреЗ, рдЬрд┐рд╕рдХрд╛ рд╕рд╛рд░ 2 рд╕рдорд╛рди рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдЦреЛрд▓рдХрд░ рдЦреЗрд▓ рдХреЗ рдореИрджрд╛рди рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рд╣реИред рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рджреЛрд╕реНрддреЛрдВ рдХреА рддрд╕реНрд╡реАрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдХрд╛рдо рдкрд░ рд▓рдЧрдирд╛
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ
рдПрдХ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛
рд╣реИ , рдЗрд╕рдХреЗ рдирд╛рдо рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реБрдПред

рдЙрд╕рдХреЗ рдмрд╛рдж, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╕рд╛рдЗрдЯ рдХрд╛ рдкрддрд╛ рдФрд░ рдЖрдзрд╛рд░ рдбреЛрдореЗрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдПрдХ HTML рдкреГрд╖реНрда рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдмреНрд▓реЙрдХ рд╣реЛрдВрдЧреЗ:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>VK Memory</title> <script type="text/javascript" src="./js/jquery.min.js"></script> <script type="text/javascript" src="./js/jquery-ui.min.js"></script> <script type="text/javascript" src="http://vkontakte.ru/js/api/openapi.js"></script> <script type="text/javascript" src="./js/jquery.pnotify.min.js"></script> <script type="text/javascript" src="./js/jquery.blockUI.js"></script> <script type="text/javascript" src="./js/general.js"></script> <link rel="stylesheet" href="./css/styles.css" type="text/css"/> <link rel="stylesheet" href="./css/ui-lightness/jquery-ui-1.8.9.custom.css" type="text/css"/> <link rel="stylesheet" href="./css/jquery.pnotify.default.css" type="text/css"/> </head> <body> <div id="content"> <div id="header"> VK Memory </div> <div class="flash-notice" style="display: none" id="login-bar"> <a href="#" id="vk-login"></a> </div> <div class="flash-success" style="display: none" id="logout-bar"> <a href="./index.html" id="new-game"> </a>, <a href="#" id="game-scores"> </a> <a href="#" id="vk-logout"></a>. </div> <div class="flash-error" style="display: none; text-align: center" id="stats"></div> <div id="game-container"></div> </div> <div id="scores-dialog" style="display: none"></div> </body> </html>
рдмреНрд▓реЙрдХреЛрдВ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп:
- div # рд▓реЙрдЧрд┐рди-рдмрд╛рд░ - рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╣реЛрддрд╛ рд╣реИ
- div # logout-bar - рдЗрд╕рдореЗрдВ рдПрдХ рдирдпрд╛ рдЧреЗрдо рд╢реБрд░реВ рдХрд░рдиреЗ, рдЖрдВрдХрдбрд╝реЗ рджреЗрдЦрдиреЗ рдФрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рд╣реИрдВ
- div # рдЦреЗрд▓-рдХрдВрдЯреЗрдирд░ - рдЦреЗрд▓ рдореИрджрд╛рди рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░
рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдУрдкрди рдПрдкреАрдЖрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рдпреБрдХреНрдд рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╛рдЗрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реИ:
<script type="text/javascript" src="http://vkontakte.ru/js/api/openapi.js"></script>
рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдЧреАред рдЗрд╕рд▓рд┐рдП, рдЖрдЗрдП рдЗрд╕рдХреЗ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред
рдУрдкрди рдПрдкреАрдЖрдИ рдХреА рд╢реБрд░реБрдЖрдд
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдПрдкреАрдЖрдИ рдХрд╛ рдЖрд░рдВрднреАрдХрд░рдг рд╣реИ, рдЬрд┐рд╕рдореЗрдВ VK.init рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдлрд╝реАрд▓реНрдб рд╡рд╛рд▓реА рдПрдХ рд╡рд╕реНрддреБ рдкрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ - рдПрдкреАрдЖрдИрдб - рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдИрдбреА (рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧ рдкреГрд╖реНрда рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ):
VK.init({ apiId: 2151186 });
рдкреНрд░рд╛рдзрд┐рдХрд░рдг
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗрдВ # vk-login, рдЬреЛ VK.Auth.login рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ - рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдПрдХреНрд╕реЗрд╕ рд╕реНрддрд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдорд┐рддреНрд░реЛрдВ рдХреА рд╕реВрдЪреА рддрдХ рдкрд╣реБрдВрдЪ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓рд┐рдВрдХ рд╣реИрдВрдбрд▓рд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
$('a#vk-login').click(function(event){ event.preventDefault(); VK.Auth.login(null, VK.access.FRIENDS); });
рд╕рддреНрд░ рд╕рдорд╛рдкреНрдд
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рддреНрд░ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, # vk-logout рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ VK.Auth.logout рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреГрд╖реНрда рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░реЗрдЧрд╛:
$('a#vk-logout').click(function(event){ event.preventDefault(); VK.Auth.logout(function(){ refreshPage(false); }); });
рдЗрд╡реЗрдВрдЯ рдЯреНрд░реИрдХрд┐рдВрдЧ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓реЙрдЧ рдЗрди рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЧреЗрдо рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдкреГрд╖реНрда рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░рдирд╛ рд╣реИ), рддреЛ рдЖрдкрдХреЛ рдУрд░реНрдЧреЗрдирд┐рдХ.рдЧреНрд▓реАрди рдШрдЯрдирд╛ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреА рдЪрд╛рд╣рд┐рдПред рд╣рдо рднреА od.sessionChange рдШрдЯрдирд╛ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ, рдпрд╣ рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рдмрджрд▓рддрд╛ рд╣реИред рдЦреЗрд▓ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╣рд▓реЗ рд╕реЗ рд▓реЙрдЧ рдЗрди рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рджреЛрд╕реНрддреЛрдВ рдХреА рд╕реВрдЪреА рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИред рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ VK.Observer.subscribe рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддрд╛ рд╣реИ - рд╡рд╣ рдИрд╡реЗрдВрдЯ рдЬрд┐рд╕реЗ рдЖрдк рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди - рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░:
VK.Observer.subscribe('auth.login', function(response){ refreshPage(true); }); VK.Observer.subscribe('auth.sessionChange', function(response){ refreshPage(true); });
рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рд▓реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓реЙрдЧ рдЗрди рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ рддреЛ рд░рд┐рдлреНрд░реЗрд╢рдкреЗрдЬ рд╡рд┐рдзрд┐ рдкреГрд╖реНрда рдХреЛ рд░рд┐рдлреНрд░реЗрд╢ рдХрд░рддреА рд╣реИ:
function refreshPage(checkLogged) { if((checkLogged && !isLogged) || !checkLogged) { location.href = 'index.html'; } }
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, VK.Auth.getLoginStatus рд╡рд┐рдзрд┐ рд╣реИред рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдзрд┐рдХреГрдд рд╣реИ рдФрд░ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдмреНрд▓реЙрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ / рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдзрд┐рдХреГрдд рд╣реИ, рддреЛ рддреБрд░рдВрдд рдЦреЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВред рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ VK.Auth.getLoginStatus рдкрджреНрдзрддрд┐ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдПрдХ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рддреНрд░ рдбреЗрдЯрд╛ рд╡рд╛рд▓реА рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
VK.Auth.getLoginStatus(function(response){ if(response.session) {
рдХрд┐рд╕реА рднреА VKontakte рдПрдкреАрдЖрдИ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, VK.Api.call рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреЛ рддреАрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд▓реЗрддреА рд╣реИ - рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо, рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рджреЛрд╕реНрддреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ friends.get рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХреЙрд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рднреА рджреЛрд╕реНрддреЛрдВ рдХреА рд╕реВрдЪреА рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреАред рдЪреВрдВрдХрд┐ рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рджреЛрд╕реНрддреЛрдВ рдХреА рддрд╕реНрд╡реАрд░реЗрдВ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╣рдо рдлрд╝реАрд▓реНрдб рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ 'photo_rec' рдорд╛рди рдХреЗ рд╕рд╛рде рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ 50 рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдХрд┐рдирд╛рд░реЗ рдХреЗ рд╕рд╛рде рд╡рд░реНрдЧ рдлрд╝реЛрдЯреЛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ:
VK.Api.call('friends.get', { fields: 'photo_rec' }, function(data){
рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдиреЗрд╕реНрдЯреЗрдб рдПрд░рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдЧреАред рдХреЛрдб 7 рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдЖрд╡реЗрджрди рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЕрдзрд┐рдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рджреЛрд╕реНрддреЛрдВ рдХреА рд╕реВрдЪреА рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреАред
рдпрджрд┐ рд╡рд┐рдзрд┐ рдХреЙрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдлрд╝реАрд▓реНрдб рд╣реЛрдЧреА, рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рджреЛрд╕реНрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
рджреЛрд╕реНрддреЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕рдореЗрдВ рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдПрдХ рддрд╕реНрд╡реАрд░ рд╣реИ (рдЕрд░реНрдерд╛рдд, рдпрд╣ рдПрдХ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рдХреЗ рд╕рд╛рде рдПрдХ рдорд╛рдирдХ рддрд╕реНрд╡реАрд░ рдирд╣реАрдВ рд╣реИ) рдФрд░ рдЦреЗрд▓ рдХреЗ рдЖрд░рдВрдн рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВ:
VK.Api.call('friends.get', { fields: 'photo_rec' }, function(data){ if(!data.error) { if(data.response.length > 0) { data.response.shuffle(); for(i = 0; i < data.response.length; i++) { var friend = data.response[i]; if(friend.photo_rec && friend.photo_rec.indexOf('images/question_c.gif') == -1) { photos.push({ photo: friend.photo_rec, id: friend.uid }); } } } initGameField(); } else { if(data.error.error_code == 7) { isLogged = false; $('div#login-bar').show(); $('div#logout-bar').hide(); $.unblockUI(); } else { showError(data.error.error_msg); } } });
рдЦреЗрд▓ рдХреА рддреИрдпрд╛рд░реА
рдЧреЗрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рддреИрдпрд╛рд░реА рдЗрд╕ рддрдереНрдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ рдХрд┐ рд╣рдо рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдлрд╝реЛрдЯреЛ рдХреА рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ (рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рджреЛрд╕реНрдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╣рдо рдЙрд╕реЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ) рдФрд░ рддрд╕реНрд╡реАрд░реЛрдВ рдХреЗ "рдмреИрдХ рд╕рд╛рдЗрдб" рд╕реЗ рднрд░реА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВред рдкреНрд░рддреНрдпреЗрдХ рдлреЛрдЯреЛ рд╕реЗрд▓ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗрдВ, рдЬрдм рдЖрдк рдлреЛрдЯреЛ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:
- рдпрджрд┐ рджреЛ рдлрд╝реЛрдЯреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЦреБрд▓реА рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ
- рдЗрд╕ рд╕реЗрд▓ рдХреЛ рд╕реМрдВрдкреЗ рдЧрдП рдлреЛрдЯреЛ рдХрд╛ "рдлреНрд░рдВрдЯ рд╕рд╛рдЗрдб" рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ
- рдпрджрд┐ рдПрдХ рдлреЛрдЯреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦреБрд▓рд╛ рд╣реИ рдФрд░ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рджреЛрдиреЛрдВ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИ (рд╕рдлрд▓ рдЪрд╛рд▓)
рдПрдХ рд╕рдлрд▓ рдХрджрдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, VKontakte API getProfiles рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИред рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХреЛ uids рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЗ рдирд╛рдо рдФрд░ рд▓рд┐рдВрдХ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рд╣реИред
рдпрджрд┐ рд╕рдВрдкреВрд░реНрдг рдлрд╝реАрд▓реНрдб рд╕рд╛рдлрд╝ рдХрд░ рджреА рдЬрд╛рддреА рд╣реИ, рддреЛ рд╣рдо рдЙрдЪреНрдЪ рдкрд░рд┐рдгрд╛рдо рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдгрд╛рдо (рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рд╕рд╛рдлрд╝ рд╣реЛ рдЧрдпрд╛ рдерд╛) рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, setUserScore рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреЛ рдПрдХрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддрд╛ рд╣реИ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рд░рд┐рдХреЙрд░реНрдб:
VK.Api.call('setUserScore', { score: stepsCount }, function(data){ if(data.error) { showError(data.error.error_msg, false); } });
рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдЦреЗрд▓ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо рдЫреЛрдЯрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЖрдк рдЕрдзрд┐рдХрддрдо рд╕рдВрднрд╡ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдкрд░рд┐рдгрд╛рдо рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
рдЪреИрдВрдкрд┐рдпрдВрд╕ рд╕реВрдЪреА
рдЙрдЪреНрдЪ рд╕реНрдХреЛрд░ рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, getHighScores рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реИред рд╡рд┐рдзрд┐ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдЙрд╕рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред
рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░рд┐рдХреЙрд░реНрдб рдХреА рддрд╛рд▓рд┐рдХрд╛ рджреЗрдЦ рд╕рдХреЗ, рдПрдХ рд▓рд┐рдВрдХрд░ рдПрдХ # рдЧреЗрдо-рд╕реНрдХреЛрд░ рдЬреЛрдбрд╝ рд╕рдХреЗ, рдЬреЛ рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛, рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдореЗрдВ рджрд┐рдЦрд╛рдПрдВ:
$('a#game-scores').click(function(event){ event.preventDefault(); VK.Api.call('getHighScores', {}, function(data){ if(!data.error) { var scoresTable = ''; if(data.response && data.response.length > 0) { for(i = 0; i < data.response.length; i++) { scoresTable = '<tr><td><a href="http://vkontakte.ru/id' + data.response[i].user_id + '" target="_blank">' + data.response[i].user_name + '</a></td><td>' + data.response[i].score + '</td></tr>' + scoresTable; } scoresTable = '<table border="0" class="scores-table" align="center"><thead><tr><td></td><td></td></tr></thead><tbody>' + scoresTable + '</tbody></table>'; } else { scoresTable = '<div style="text-align: center"> </div>'; } $('#scores-dialog:ui-dialog').dialog('destroy'); $('#scores-dialog') .html(scoresTable) .dialog({ title: ' ', modal: true, draggable: false, resizable: false, buttons: { '': function(){ $(this).dialog('close'); } } }); } else { showError(data.error.error_msg, false); } }); })
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╣реИрдВрдбрд▓рд░ рдХреЛрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рддрд╛рд▓рд┐рдХрд╛ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдирдИ рдкрдВрдХреНрддрд┐ рдХреЛ рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реЗ рдкрд╣рд▓реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЦреЗрд▓ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред
рдкрд░рд┐рдгрд╛рдо
рдЕрдВрддрд┐рдо рдлрд╝рд╛рдЗрд▓ general.js рдХреЛ
рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ , рдЧреЗрдо рд╕реНрд╡рдпрдВ
VK рдореЗрдореЛрд░реА рд▓рд┐рдВрдХ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред
рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП jQuery
рдкрд╛рдЗрдВрд╕ рдиреЛрдЯрд┐рдлрд╛рдИ рдФрд░
рдмреНрд▓реЙрдХрдпреВрдЖрдИ рдХреЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдкреЗрдЬ рдкрд░ VKontakte API рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА
рд╣реИ ред