рд╣рдо VKontakte рд╕рдореВрд╣реЛрдВ (рдкрд░реНрд▓) рдореЗрдВ рдПрдХ рддрд╕реНрд╡реАрд░ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдЪрд╛рд░ рдкреЛрд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВ

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




рд▓рдШреБ рдпреЛрдЬрдирд╛:
1. рдПрдХ VKontakte рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВред
2. рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдЯреЛрдХрди рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ
3. рд╣рдореЗрдВ рдЪрд┐рддреНрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ URL рдорд┐рд▓рддрд╛ рд╣реИред
4. рдЪрд┐рддреНрд░ рдХреЛ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВред
5. рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд┐рддреНрд░ рд╕рд╣реЗрдЬреЗрдВред
6. рд╣рдо рдкреГрд╖реНрда рдкрд░ рдПрдХ рддрд╕реНрд╡реАрд░ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдЪрд╛рд░ рдкреЛрд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВред

1. VKontakte рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВред
рд╕рд╛рдЗрдЯ рдХреЗ рдиреАрдЪреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╣реИ, рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ рдмрдЯрдиред
рдПрдХ рдирд╛рдо рдФрд░ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪреБрдиреЗрдВред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрдкрд╛рджрди рд╕реЗрдЯрд┐рдВрдЧ рдЯреИрдм рдкрд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреА рдЖрдИрдбреА рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред (рдпрд╛рдж рд░рдЦреЗрдВ)ред

2. рд╣рдо рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ (рдХреБрдВрдЬреА рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдмрдирд╛рдИ рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╛рдЗрдЯ рдкрд░ рдЕрдзрд┐рдХреГрдд рд╣реЛрдЧреА)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреЗрдЬ рдЦреЛрд▓реЗрдВ:
https://oauth.vk.com/authorize?client_id={ID}&scope=wall,photos,audio,video,docs,notes,groups,messages,notifications,stats,ads,notify,friends,offline&redirect_uri=http://oauth.vk.com/blank.html&display=page&response_type=token 

рдЬрд╣рд╛рдБ
{рдЖрдИрдбреА} - рдмрдирд╛рдП рдЧрдП рдЖрд╡реЗрджрди рдХреА рдЖрдИрдбреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 1234563,
рдЧреБрдВрдЬрд╛рдЗрд╢ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рд░ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рдПрдЧреАред
(рджреАрд╡рд╛рд░ - рджреАрд╡рд╛рд░ рдкрд░ рдкреЛрд╕реНрдЯ, рдлрд╝реЛрдЯреЛ - рдлреЛрдЯреЛ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ, рд╕рдореВрд╣ - рд╕рдореВрд╣реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ, рд╕рдВрджреЗрд╢ - рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВ, рдорд┐рддреНрд░ - рдорд┐рддреНрд░реЛрдВ рдФрд░ рдСрдлрд╝рд▓рд╛рдЗрди рддрдХ рдкрд╣реБрдВрдЪреЗрдВ - рддрд╛рдХрд┐ рдЯреЛрдХрди рдХрднреА рд╕рдорд╛рдкреНрдд рди рд╣реЛ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рдореЗрд╢рд╛ рд╕рд╛рдЗрдЯ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХреЗ)ред
response_type = token - рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рдЗрд╕рдХреЗ рдмрд╛рдж рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдЬрд╛рдПрдВ:

рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░:


 #!/usr/bin/env perl use strict; use LWP; use HTTP::Request::Common; my $token = '55e43443343435355a3e70e805722345552227'; #      my $gid = '65596688'; #  ID      . my $file = '/home/ds/test/2.jpg'; #     my $site_url = 'http://example.com'; #    ,        my $message = '  '; #     . 


3. рдЕрдм рд╣рдореЗрдВ VKontakte рд╕рд░реНрд╡рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдо рдЪрд┐рддреНрд░ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВрдЧреЗ:


 #      getWallUploadServer my $url1 = "https://api.vkontakte.ru/method/photos.getWallUploadServer?gid=$gid&access_token=$token"; my $res_url = &get_data($url1); $res_url =~ s/([\\'])?//g; #   . $res_url = $1 if ($res_url =~ m/.*?upload_url\"\:\"(.*?)\".*?/); #  URL. my ($url , $param) = split(/\?/, $res_url); #  url       my %url_param = map {split("=")} split("&", $param); 


4. рдЪрд┐рддреНрд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ url рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ:


  my $ua = LWP::UserAgent->new (agent=>'Mozilla/5.0', requests_redirectable=>0); my $res = $ua->request ( POST "$url", Content_Type => 'multipart/form-data', Content => [ 'act' => $url_param{'act'}, 'mid' => $url_param{'mid'}, 'aid' => $url_param{'aid'}, 'gid' => $url_param{'gid'}, 'hash' => $url_param{'hash'}, 'rhash' => $url_param{'rhash'}, 'swfupload' => $url_param{'swfupload'}, 'api' => $url_param{'api'}, 'wallphoto' => $url_param{'wallphoto'}, 'photo' => [$file], ], ) die("$!"); my $res_upload = $res->as_string(); $res_upload =~ s/([\\'])?//g; #  . #      my $server_upload = $1 if ( $res_upload =~ m/server\"\:(.*?),\".*/); my $photo_upload = $1 if ( $res_upload =~ m/\"photo\"\:\"(.*?)\",\"hash.*/); my $hash_upload = $1 if ( $res_upload =~ m/\"hash\"\:\"(.*?)\"}$/); 


5. рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдЫрд╡рд┐ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛:


  my $url2 = "https://api.vkontakte.ru/method/photos.saveWallPhoto?gid=$gid&access_token=$token&server=$server_upload&photo=$photo_upload&hash=$hash_upload"; my $res_save = get_data($url2); my $ph_id = $1 if ( $res_save =~ m/\"id\"\:\"(.*?)\",\".*/); #      


6. рдФрд░ рдЖрдЦрд┐рд░реА рдкреЛрд╕реНрдЯ рдЗрд╕реЗ рджреАрд╡рд╛рд░ рдкрд░ рдХрд░реЗрдВ:


  my $url3 = "https://api.vkontakte.ru/method/"."wall.post?owner_id=-$gid&attachments=$ph_id,$site_url&from_group=1&access_token=$token"; #  url  . $url3 .="&message=$message" if ($message); #   ,   . my $res_post = get_data($url3); 

, рдЬрд╣рд╛рдВ owner_id рдХреЛ "-" рдЪрд┐рд╣реНрди (рдорд╛рдЗрдирд╕) рдХреЗ рд╕рд╛рде рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╕рдореВрд╣ рд╣реИред
from_group = 1 - рд╕рдореВрд╣ рдХреА рдУрд░ рд╕реЗ рд╕рдорд╛рдЪрд╛рд░ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВред

рдЕрдВрдд рдореЗрдВ, рдПрдХ рдЫреЛрдЯрд╛ get_data () рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЬреЛ http рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реЗрд╕ рдХреА рдЧрдИ рдереАред
  my $url = shift; my $ua = LWP::UserAgent->new (agent=>'Mozilla/5.0', requests_redirectable=>0); my $get_url = $ua->request (GET "$url") die("$!"); my $res_url = $get_url->as_string(); return ($res_url); 


рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдХреБрдЫ vkontakte рд▓рд┐рдВрдХ:
рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛:

 https://api.vkontakte.ru/method/messages.send?uid={UID}&message={MSG}&title={TITLE}&access_token={TOKEN} 

рдЬрд╣рд╛рдВ рдпреВрдЖрдИрдбреА рдЙрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЖрдИрдбреА рд╣реИ рдЬрд┐рд╕реЗ рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╣ рдПрдХ рдбрд┐рдЬрд┐рдЯрд▓ рдореВрд▓реНрдп рд╣реИ, рдпрджрд┐ рдорд┐рддреНрд░ рдХрд╛ рдпреВрдЖрд░рдПрд▓ рдкрддреНрд░ рдЖрдИрдбреА рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЙрд╕рдХреЗ рдПрд▓реНрдмрдо рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпреВрдЖрд░рдПрд▓ рдореЗрдВ рдирдВрдмрд░ рд╣реЛрдВрдЧреЗ), {MSG} - рд╕рдВрджреЗрд╢ рд╕реНрд╡рдпрдВ, {TITLE} - рд╕рдВрджреЗрд╢ рд╢реАрд░реНрд╖рд▓реЗрдЦ, рдФрд░ рдЖрдкрдХрд╛ рдЯреЛрдХрдиред

рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓реЗрдВред рдпрд╣рд╛рдВ рдЖрдИрдбреА рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрд╡реЗрджрди рдЖрдкрдХреЗ рдЦрд╛рддреЗ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред

 https://api.vkontakte.ru/method/status.set?text={TEXT}&access_token={TOKEN} 


рдПрдХ рд╕рдореВрд╣ рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рджреАрд╡рд╛рд░ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ред

 https://api.vkontakte.ru/method/wall.post?owner_id=-{GID}&message={MSG}&from_group=1&access_token={TOKEN} 

, рдЬрд╣рд╛рдВ {GID} рдПрдХ рдЛрдг рдЪрд┐рд╣реНрди рдХреЗ рд╕рд╛рде рд╕рдореВрд╣ рдХреА рдбрд┐рдЬрд┐рдЯрд▓ рдЖрдИрдбреА рд╣реИ, {MSG} рд╕рдВрджреЗрд╢ рд╣реИ, from_group рд╡рд╣ рд╕рдВрджреЗрд╢ рд╣реИ рдЬрд┐рд╕рд╕реЗ (1 - рд╕рдореВрд╣ рд╕реЗ (рдпрджрд┐ рдЖрдк рдПрдХ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╣реИрдВ))ред

рд╡рд╣ рд╕рдм рд╣реИред рдмреЗрд╢рдХ, рдЖрдкрдХреЛ рдЕрднреА рднреА рддреНрд░реБрдЯрд┐ рдЬрд╛рдВрдЪрдиреЗ рдФрд░ рдХреЛрдб рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдЖрджрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдк рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред

Source: https://habr.com/ru/post/In211198/


All Articles