· 8 years ago · Jan 31, 2017, 04:26 PM
1<?php
2
3class Socialist_Controller extends Controller {
4
5 public function gp($request)
6 {
7 // youtube.com authorization
8 $app_settings = App::settings();
9 $api = $app_settings['socialist']['gp'];
10
11 if( isset($_GET['error']) && $_GET['error'] == 'access_denied' )
12 {
13 Http::redirect('/');
14 }
15
16 if( isset($_GET['from_my_price']) )
17 {
18 $_SESSION['from_my_price'] = true;
19 }
20
21 /*
22 * You can acquire an OAuth 2.0 client ID and client secret from the
23 * Google Developers Console <https://console.developers.google.com/>
24 * For more information about using OAuth 2.0 to access Google APIs, please see:
25 * <https://developers.google.com/youtube/v3/guides/authentication>
26 * Please ensure that you have enabled the YouTube Data API for your project.
27 */
28 $OAUTH2_CLIENT_ID = $api['client_id'];
29 $OAUTH2_CLIENT_SECRET = $api['client_secret'];
30
31 $client = new Google_Client();
32 $client->setClientId($OAUTH2_CLIENT_ID);
33 $client->setClientSecret($OAUTH2_CLIENT_SECRET);
34 $client->setScopes(array(
35 'https://www.googleapis.com/auth/youtube',
36 'https://www.googleapis.com/auth/youtubepartner',
37 'https://www.googleapis.com/auth/youtube.readonly',
38 'https://www.googleapis.com/auth/youtube.force-ssl',
39 'https://www.googleapis.com/auth/userinfo.profile'));
40 $redirect = filter_var(\Http::getHostUrl() . \Urls::get(array('app' => 'socialist', 'alias' => 'via-gp')),
41 FILTER_SANITIZE_URL);
42 $client->setRedirectUri($redirect);
43
44 // Define an object that will be used to make all API requests.
45 $youtube = new Google_Service_YouTube($client);
46
47 if (isset($_GET['code'])) {
48 if (strval($_SESSION['state']) !== strval($_GET['state'])) {
49 exit('The session state did not match.');
50 }
51
52 $client->authenticate($_GET['code']);
53 $_SESSION['token'] = $client->getAccessToken();
54 header('Location: ' . $redirect);
55 }
56
57 if (isset($_SESSION['token'])) {
58 $client->setAccessToken($_SESSION['token']);
59 }
60
61 // Check to ensure that the access token was successfully acquired.
62 if( $client->getAccessToken() ) {
63 try {
64 unset($_SESSION['token']);
65
66 // Call the channels.list method to retrieve information about the
67 // currently authenticated user's channel.
68 $channelsResponse = $youtube->channels->listChannels('snippet,contentDetails,statistics,brandingSettings', array(
69 'mine' => 'true',
70 ));
71
72 $chsh = array_shift($channelsResponse['items']);
73 $channel_summary = array(
74 'id' => $chsh['id'],
75 'title' => $chsh['modelData']['snippet']['title'],
76 'description' => $chsh['modelData']['snippet']['description'],
77 'custom_url' => $chsh['modelData']['snippet']['customUrl'],
78 'image' => $chsh['modelData']['snippet']['thumbnails']['medium']['url'],
79 'banner_image' => $chsh['modelData']['brandingSettings']['image']['bannerTabletExtraHdImageUrl'],
80 'statistics' => $chsh['modelData']['statistics']
81 );
82
83 // This is the place to create a user account
84 $chemail = $channel_summary['id'] . '@youtube.com';
85 if( !\Users\get('id') && !R::count('users', "`email` = ? AND `viasocial` = 1", array($chemail)) && !\Users\get('id') )
86 {
87 $r = R::dispense('users');
88 $r->name = $channel_summary['title'];
89 $r->email = $chemail;
90 $r->password = '';
91
92 $r->verified = 1;
93 $r->viasocial = true;
94 $r->ban = 0;
95
96 // avatar image
97 $file_info = pathinfo($channel_summary['image']);
98 $avatars_media_dir = '/static/uploads/avatars/';
99 $avatars_dir = BASE_DIR . $avatars_media_dir;
100 $new_fname = FileSystem::getUniqueFilename($file_info['basename'], $avatars_dir);
101 file_put_contents($avatars_dir.$new_fname, Http::request($channel_summary['image'], true));
102 $image = new ImageResize();
103 $image->load($avatars_dir.$new_fname);
104 $image->resizeToWidth(236);
105 $image->save($avatars_dir.$new_fname);
106 $r->avatar = $new_fname;
107 $uid = R::store($r);
108 } else
109 {
110 $uid = \Users\get('id');
111 }
112
113 // and, create a channel record for him
114 $channel_record = R::findOne('channels', "`channel_id` = ?", array($channel_summary['id']));
115 if( !$channel_record )
116 {
117 // create
118 $channel_record = R::dispense('channels');
119 } else
120 {
121 // update
122 $channel_record = R::load('channels', $channel_record['id']);
123 }
124
125 $channel_record->channel_id = $channel_summary['id'];
126 $channel_record->title = $channel_summary['title'];
127 $channel_record->description = $channel_summary['description'];
128 $channel_record->custom_url = $channel_summary['custom_url'];
129
130 // avatar image
131 if( !$channel_record->image )
132 {
133 $file_info = pathinfo($channel_summary['image']);
134 $avatars_media_dir = '/static/uploads/avatars/';
135 $avatars_dir = BASE_DIR . $avatars_media_dir;
136 $new_fname = FileSystem::getUniqueFilename($file_info['basename'], $avatars_dir);
137 file_put_contents($avatars_dir.$new_fname, Http::request($channel_summary['image'], true));
138 $image = new ImageResize();
139 $image->load($avatars_dir.$new_fname);
140 $image->resizeToWidth(236);
141 $image->save($avatars_dir.$new_fname);
142 $channel_record->image = $new_fname;
143 }
144
145 // banner image
146 if( !$channel_record->banner_image )
147 {
148 $file_info = pathinfo($channel_summary['banner_image']);
149 $avatars_media_dir = '/static/uploads/banners/';
150 $avatars_dir = BASE_DIR . $avatars_media_dir;
151 $new_fname = FileSystem::getUniqueFilename($file_info['basename'], $avatars_dir);
152 file_put_contents($avatars_dir.$new_fname, Http::request($channel_summary['banner_image'], true));
153 $channel_record->banner_image = $new_fname;
154 }
155
156 $channel_record->view_count = $channel_summary['statistics']['viewCount'];
157 $channel_record->comment_count = $channel_summary['statistics']['commentCount'];
158 $channel_record->subscriber_count = $channel_summary['statistics']['subscriberCount'];
159 $channel_record->hidden_subscriber_count = $channel_summary['statistics']['hiddenSubscriberCount'];
160 $channel_record->video_count = $channel_summary['statistics']['videoCount'];
161 $channel_record->sharedUsersList[] = R::load('users', $uid);
162 $channel_record->last_update = TimeManager::time();
163 $chid = R::store($channel_record);
164
165 if( \Users\get('id') )
166 {
167 if( isset($_SESSION['from_my_price']) )
168 {
169 unset($_SESSION['from_my_price']);
170 Http::redirect(\Urls::get(array('app' => 'catalog', 'method' => 'my_price')));
171 } else
172 {
173 Http::redirect('/');
174 }
175 }
176
177 // login now
178 $_POST['email'] = $chemail;
179 $_POST['password'] = '';
180
181 $users_controller = BASE_DIR . '/apps/users/controller.php';
182 require $users_controller;
183 $uc = new Users_Controller();
184 define('FORCE_SOCIAL_LOGIN', true);
185 $uc->do_signin(array());
186 exit();
187
188 } catch (Google_Service_Exception $e) {
189 unset($_SESSION['token']);
190 Http::redirect(ACTIVE_URI);
191 exit(sprintf('<p>A service error occurred: <code>%s</code></p>',
192 htmlspecialchars($e->getMessage())));
193 } catch (Google_Exception $e) {
194 unset($_SESSION['token']);
195 Http::redirect(ACTIVE_URI);
196 exit(sprintf('<p>An client error occurred: <code>%s</code></p>',
197 htmlspecialchars($e->getMessage())));
198 }
199
200 $_SESSION['token'] = $client->getAccessToken();
201 } else {
202 unset($_SESSION['token']);
203 $state = mt_rand();
204 $client->setState($state);
205 $_SESSION['state'] = $state;
206
207 $authUrl = $client->createAuthUrl();
208
209 Http::redirect($authUrl);
210 }
211
212 exit('test');
213 }
214
215 public function vk_go($request)
216 {
217 if( \Users\get('id') )
218 {
219 Http::redirect('/');
220 }
221
222 Http::redirect( \Socialist\vk_login_url() );
223 }
224
225 public function vk($request)
226 {
227 // vk.com authorization
228 $app_settings = App::settings();
229 $api = $app_settings['socialist']['vk'];
230
231 if( \Users\get('id') )
232 {
233 Http::redirect('/');
234 }
235
236 if(!empty($_GET['code']))
237 {
238 // we got the code
239 $vk_grand_url = "https://api.vk.com/oauth/access_token?client_id=".$api['id']."&client_secret=".$api['secret']."&code=".$_GET['code']."&redirect_uri=" . urlencode(\Http::getHostUrl() . \Urls::get(array('app' => 'socialist', 'alias' => 'via-vk-handler')));
240 $resp = Http::request($vk_grand_url,true);
241 $data = json_decode($resp, true);
242
243 $vk_access_token = $data['access_token'];
244 $vk_uid = $data['user_id'];
245
246 $res = Http::request("https://api.vk.com/method/users.get?uids=".$vk_uid."&access_token=".$vk_access_token."&fields=uid,first_name,last_name,screen_name,sex,bdate,city,photo_200_orig",true);
247 $data = json_decode($res, true);
248 $user_info = $data['response'][0];
249
250 if( R::count('users', "`email` = ? AND `viasocial` = 1", array($user_info['uid'].'@vk.com')) )
251 {
252 // already exists, login
253 $_POST['email'] = $user_info['uid'].'@vk.com';
254 $_POST['password'] = '';
255
256 $users_controller = BASE_DIR . '/apps/users/controller.php';
257 require $users_controller;
258 $uc = new Users_Controller();
259 define('FORCE_SOCIAL_LOGIN', true);
260 $uc->do_signin(array());
261 exit();
262 } else
263 {
264 // not exists, signup
265 $r = R::dispense('users');
266 $r->name = $user_info['first_name'].' '.$user_info['last_name'];
267 $r->email = $user_info['uid'].'@vk.com';
268 $r->password = '';
269
270 $r->verified = 1;
271 $r->viasocial = true;
272 $r->ban = 0;
273
274 $file_info = pathinfo($user_info['photo_200_orig']);
275 $avatars_media_dir = '/static/uploads/avatars/';
276 $avatars_dir = BASE_DIR . $avatars_media_dir;
277 $new_fname = FileSystem::getUniqueFilename($file_info['basename'], $avatars_dir);
278 file_put_contents($avatars_dir.$new_fname, Http::request($user_info['photo_200_orig'], true));
279 $image = new ImageResize();
280 $image->load($avatars_dir.$new_fname);
281 $image->resizeToWidth(236);
282 $image->save($avatars_dir.$new_fname);
283
284 $r->avatar = $new_fname;
285 R::store($r);
286
287 // login now
288 $_POST['email'] = $user_info['uid'].'@vk.com';
289 $_POST['password'] = '';
290
291 $users_controller = BASE_DIR . '/apps/users/controller.php';
292 require $users_controller;
293 $uc = new Users_Controller();
294 define('FORCE_SOCIAL_LOGIN', true);
295 $uc->do_signin(array());
296 exit();
297 }
298 } else
299 {
300 redirect('/');
301 }
302 }
303
304 public function fb($request)
305 {
306 // facebook.com authorization
307 $app_settings = App::settings();
308 $api = $app_settings['socialist']['fb'];
309
310 if(!empty($_GET['code']))
311 {
312 $params = array(
313 'client_id' => $api['id'],
314 'redirect_uri' => SELF_URL,
315 'client_secret' => $api['secret'],
316 'code' => $_GET['code']
317 );
318
319 $url = 'https://graph.facebook.com/oauth/access_token';
320 $tokenInfo = null;
321 $rqwst = Http::request($url . '?' . http_build_query($params),true);
322 parse_str($rqwst, $tokenInfo);
323 if (count($tokenInfo) > 0 && isset($tokenInfo['access_token'])) {
324 $params = array('access_token' => $tokenInfo['access_token']);
325 $userInfo = json_decode(Http::request('https://graph.facebook.com/me' . '?fields=location,id,birthday,email,first_name,gender,last_name,link,name,age_range&' . urldecode(http_build_query($params)),true), true);
326 if (isset($userInfo['id'])) {
327 $userInfo = $userInfo;
328 $result = true;
329 }
330 }
331 $user_info = $userInfo;
332 $user_picture = 'https://graph.facebook.com/'.$user_info['id'].'/picture?type=large&ext=.jpg';
333
334 if (R::count('users', 'email = ?', array($user_info['id'].'@facebook.com'))) {
335 // already exists, login
336 $_POST['email'] = $user_info['id'].'@facebook.com';
337 $_POST['password'] = base64_encode(($user_info['id'] + 100500));
338
339 $this->load('users/controller');
340 $this->connections->controller['users']->login($request);
341 exit();
342 } else {
343 // not found, signup
344 $newUser = R::dispense('users');
345 $newUser->is_activated = 1;
346 $newUser->is_admin = 0;
347 $newUser->is_banned = 0;
348 $newUser->login = $user_info['id'].'@facebook.com';
349
350 $newUser->password = password_hash(base64_encode(($user_info['id'] + 100500)), PASSWORD_DEFAULT);
351 $newUser->name = $user_info['first_name'].' '.$user_info['last_name'];
352 $gender = $user_info['gender'];
353 $newUser->gender = trim(FilterMaster::filterAll($gender));
354
355 $age = 0;
356 if (isset($user_info['birthday']) && $user_info['birthday'] != '') {
357 $birth_date = strtotime($user_info['birthday']);
358 $age = (int)date('Y',TimeManager::time()) - date('Y',$birth_date);
359 }
360 $newUser->age = $age;
361
362 $city = '';
363 if(isset($user_info['location']) && isset($user_info['location']['name']) && $user_info['location']['name'] != '') {
364 $city = $user_info['location']['name'];
365 }
366 $newUser->city = trim(FilterMaster::filterAll($city));
367
368 $file_info = pathinfo($user_picture);
369 $avatars_media_dir = '/static/uploads/avatars/';
370 $avatars_dir = BASE_DIR.$avatars_media_dir;
371 $new_fname = FileSystem::getUniqueFilename($file_info['basename'],$avatars_dir);
372 file_put_contents($avatars_dir.$new_fname,Http::request($user_picture,true));
373 $image = new ImageResize();
374 $image->load($avatars_dir.$new_fname);
375 $image->resizeToWidth(207);
376 $image->save($avatars_dir.$new_fname);
377 $newUser->avatar = $new_fname;
378
379 $newUser->email = $user_info['id'].'@facebook.com';
380 $newUser->money = 0.00;
381 $newUser->socials = json_encode(array('facebook'=>$user_info['id']));
382 $newUser->profilesettings = json_encode(array());
383 $newUser->account_type = 0;
384 $id = R::store($newUser);
385
386 // login now
387 $_POST['email'] = $user_info['id'].'@facebook.com';
388 $_POST['password'] = base64_encode(($user_info['id'] + 100500));
389
390 $this->load('users/controller');
391 $this->connections->controller['users']->login($request);
392 exit();
393 }
394 } else
395 {
396 redirect('/');
397 }
398 }
399
400 public function tw($request)
401 {
402 // twitter.com authorization
403 $app_settings = App::settings();
404 $api = $app_settings['socialist']['tw'];
405
406 define('CONSUMER_KEY', $api['key']);
407 define('CONSUMER_SECRET', $api['secret']);
408 define('REQUEST_TOKEN_URL', 'https://api.twitter.com/oauth/request_token');
409 define('AUTHORIZE_URL', 'https://api.twitter.com/oauth/authorize');
410 define('ACCESS_TOKEN_URL', 'https://api.twitter.com/oauth/access_token');
411 define('ACCOUNT_DATA_URL', 'https://api.twitter.com/1.1/users/show.json');
412 define('CALLBACK_URL', SELF_URL);
413 define('URL_SEPARATOR', '&');
414
415 if( isset($_GET['auth_redirect']) )
416 {
417 $this->tw_authorize();
418 } else
419 {
420 if( !empty($_GET['oauth_token']) && !empty($_GET['oauth_verifier']) )
421 {
422 $oauth_nonce = md5(uniqid(rand(), true));
423 $oauth_timestamp = time();
424 $oauth_token = $_GET['oauth_token'];
425 $oauth_verifier = $_GET['oauth_verifier'];
426
427 $oauth_base_text = "GET&";
428 $oauth_base_text .= urlencode(ACCESS_TOKEN_URL)."&";
429
430 $params = array(
431 'oauth_consumer_key=' . CONSUMER_KEY . URL_SEPARATOR,
432 'oauth_nonce=' . $oauth_nonce . URL_SEPARATOR,
433 'oauth_signature_method=HMAC-SHA1' . URL_SEPARATOR,
434 'oauth_token=' . $oauth_token . URL_SEPARATOR,
435 'oauth_timestamp=' . $oauth_timestamp . URL_SEPARATOR,
436 'oauth_verifier=' . $oauth_verifier . URL_SEPARATOR,
437 'oauth_version=1.0'
438 );
439
440 $key = CONSUMER_SECRET . URL_SEPARATOR;
441 $oauth_base_text = 'GET' . URL_SEPARATOR . urlencode(ACCESS_TOKEN_URL) . URL_SEPARATOR . implode('', array_map('urlencode', $params));
442 $oauth_signature = base64_encode(hash_hmac("sha1", $oauth_base_text, $key, true));
443
444 $params = array(
445 'oauth_nonce=' . $oauth_nonce,
446 'oauth_signature_method=HMAC-SHA1',
447 'oauth_timestamp=' . $oauth_timestamp,
448 'oauth_consumer_key=' . CONSUMER_KEY,
449 'oauth_token=' . urlencode($oauth_token),
450 'oauth_verifier=' . urlencode($oauth_verifier),
451 'oauth_signature=' . urlencode($oauth_signature),
452 'oauth_version=1.0'
453 );
454 $url = ACCESS_TOKEN_URL . '?' . implode('&', $params);
455 $response = Http::request($url,true);
456 parse_str($response, $response);
457
458 $oauth_nonce = md5(uniqid(rand(), true));
459 $oauth_timestamp = time();
460
461 $oauth_token = $response['oauth_token'];
462 $oauth_token_secret = $response['oauth_token_secret'];
463 $screen_name = $response['screen_name'];
464
465 $params = array(
466 'oauth_consumer_key=' . CONSUMER_KEY . URL_SEPARATOR,
467 'oauth_nonce=' . $oauth_nonce . URL_SEPARATOR,
468 'oauth_signature_method=HMAC-SHA1' . URL_SEPARATOR,
469 'oauth_timestamp=' . $oauth_timestamp . URL_SEPARATOR,
470 'oauth_token=' . $oauth_token . URL_SEPARATOR,
471 'oauth_version=1.0' . URL_SEPARATOR,
472 'screen_name=' . $screen_name
473 );
474 $oauth_base_text = 'GET' . URL_SEPARATOR . urlencode(ACCOUNT_DATA_URL) . URL_SEPARATOR . implode('', array_map('urlencode', $params));
475
476 $key = CONSUMER_SECRET . '&' . $oauth_token_secret;
477 $signature = base64_encode(hash_hmac("sha1", $oauth_base_text, $key, true));
478
479 $params = array(
480 'oauth_consumer_key=' . CONSUMER_KEY,
481 'oauth_nonce=' . $oauth_nonce,
482 'oauth_signature=' . urlencode($signature),
483 'oauth_signature_method=HMAC-SHA1',
484 'oauth_timestamp=' . $oauth_timestamp,
485 'oauth_token=' . urlencode($oauth_token),
486 'oauth_version=1.0',
487 'screen_name=' . $screen_name
488 );
489
490 $url = ACCOUNT_DATA_URL . '?' . implode(URL_SEPARATOR, $params);
491
492 $response = Http::request($url,true);
493
494 // fuh... now into json
495 $user_data = json_decode($response,true);
496 $user_info = $user_data;
497
498 if( R::count('users','email = ?',array($user_info['id_str'].'@twitter.com')) )
499 {
500 // account isset, login
501 $_POST['email'] = $user_info['id_str'].'@twitter.com';
502 $_POST['password'] = base64_encode(($user_info['id_str'] + 100500));
503
504 $this->load('users/controller');
505 $this->connections->controller['users']->login($request);
506 } else
507 {
508 // new user, signup
509 // http://pbs.twimg.com/profile_images/id_str/Rtg92MO0_normal.png
510 $newUser = R::dispense('users');
511 $newUser->is_activated = 1;
512 $newUser->is_admin = 0;
513 $newUser->is_banned = 0;
514 $newUser->login = $user_info['id_str'].'@twitter.com';
515 $newUser->password = password_hash(base64_encode(($user_info['id_str'] + 100500)), PASSWORD_DEFAULT);
516 $newUser->name = $user_info['name'];
517 $gender = 'male';
518 $newUser->gender = trim(FilterMaster::filterAll($gender));
519 $newUser->age = (int)trim(FilterMaster::filterAll(20));
520 $newUser->city = trim(FilterMaster::filterAll($user_info['location']));
521 $newUser->email = $user_info['id_str'].'@twitter.com';
522 $newUser->money = 0.00;
523
524 $user_picture = str_replace('_normal','',$user_info['profile_image_url']);
525 $file_info = pathinfo($user_picture);
526 $avatars_media_dir = '/static/uploads/avatars/';
527 $avatars_dir = BASE_DIR.$avatars_media_dir;
528 $new_fname = FileSystem::getUniqueFilename($file_info['basename'],$avatars_dir);
529 file_put_contents($avatars_dir.$new_fname,Http::request($user_picture,true));
530 $image = new ImageResize();
531 $image->load($avatars_dir.$new_fname);
532 $image->resizeToWidth(207);
533 $image->save($avatars_dir.$new_fname);
534 $newUser->avatar = $new_fname;
535
536 $newUser->socials = json_encode(array('twitter'=>$user_info['screen_name']));
537 $newUser->profilesettings = json_encode(array());
538 $newUser->account_type = 0;
539 $id = R::store($newUser);
540
541 // login
542 $_POST['email'] = $user_info['id_str'].'@twitter.com';
543 $_POST['password'] = base64_encode(($user_info['id_str'] + 100500));
544
545 $this->load('users/controller');
546 $this->connections->controller['users']->login($request);
547 }
548 } else
549 {
550 redirect('/');
551 }
552 }
553 }
554
555
556 public function tw_authorize() {
557 $oauth_nonce = md5(uniqid(rand(), true));
558 $oauth_timestamp = time();
559
560 $params = array(
561 'oauth_callback=' . urlencode(CALLBACK_URL) . URL_SEPARATOR,
562 'oauth_consumer_key=' . CONSUMER_KEY . URL_SEPARATOR,
563 'oauth_nonce=' . $oauth_nonce . URL_SEPARATOR,
564 'oauth_signature_method=HMAC-SHA1' . URL_SEPARATOR,
565 'oauth_timestamp=' . $oauth_timestamp . URL_SEPARATOR,
566 'oauth_version=1.0'
567 );
568 $oauth_base_text = implode('', array_map('urlencode', $params));
569 $key = CONSUMER_SECRET . URL_SEPARATOR;
570 $oauth_base_text = 'GET' . URL_SEPARATOR . urlencode(REQUEST_TOKEN_URL) . URL_SEPARATOR . $oauth_base_text;
571 $oauth_signature = base64_encode(hash_hmac('sha1', $oauth_base_text, $key, true));
572
573 //params
574 $params = array(
575 URL_SEPARATOR . 'oauth_consumer_key=' . CONSUMER_KEY,
576 'oauth_nonce=' . $oauth_nonce,
577 'oauth_signature=' . urlencode($oauth_signature),
578 'oauth_signature_method=HMAC-SHA1',
579 'oauth_timestamp=' . $oauth_timestamp,
580 'oauth_version=1.0'
581 );
582
583 // Ñклеиваем параметры Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ url
584 $url = REQUEST_TOKEN_URL . '?oauth_callback=' . urlencode(CALLBACK_URL) . implode('&', $params);
585
586 // ОтправлÑем GET Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð¾ Ñформированному url
587 $response = Http::request($url,true);
588
589 // ПарÑим ответ
590 parse_str($response, $response);
591
592 // запиÑываем ответ в переменные
593 $oauth_token = $response['oauth_token'];
594 $oauth_token_secret = $response['oauth_token_secret'];
595
596 //в итоге Ñама ÑÑылка
597 $link = AUTHORIZE_URL . '?oauth_token=' . $oauth_token;
598
599 redirect( $link );
600 }
601
602}