MaxWatson
Местный
- Сообщения
- 33
- Реакции
- 1
Всем привет, кто делал авторизацию на сайте через ВК? Посмотрите пожалуйста.
Вообщем, токен не получаю , а получаю {"error":"invalid_grant","error_description":"Code is invalid or expired."}.
Сам сайт указывает на строчку в файле 36. вот она
$token = json_decode(file_get_contents('https://oauth.vk.com/access_token' . '?' . urldecode(https_build_query($vk_params))), true);
Вообщем, токен не получаю , а получаю {"error":"invalid_grant","error_description":"Code is invalid or expired."}.
Сам сайт указывает на строчку в файле 36. вот она
$token = json_decode(file_get_contents('https://oauth.vk.com/access_token' . '?' . urldecode(https_build_query($vk_params))), true);
PHP:
<?php
if (!empty($_SESSION['user'])) {
header("Location: /account/earn/links");
}
$time = time();
$data = array();
$config = new config();
$ip = func::clear($_SERVER['REMOTE_ADDR']);
$meta =func::clear($_SERVER['HTTP_USER_AGENT']);
$vk_url = 'http://oauth.vk.com/authorize';
$vk_params = array(
'client_id' => $config->vk_client_id,
'redirect_uri' => $config->vk_redirect_uri,
'scope' => 'email,photos',
'response_type' => 'code'
);
$data['vk_auth'] = $vk_url . "?" . urldecode(http_build_query($vk_params));
if (isset($_GET['code'])) {
$result = false;
$vk_params = array(
'client_id' => $config->vk_client_id,
'client_secret' => $config->vk_client_secret,
'code' => $_GET['code'],
'redirect_uri' => $config->vk_redirect_uri
);
//ВОТ ДО СЮДА ДОХОДИТ, А ДАЛЬШЕ НЕ ИДЁТ***
$token = json_decode(file_get_contents('https://oauth.vk.com/access_token' . '?' . urldecode(https_build_query($vk_params))), true);
if (isset($token['access_token'])) {
$vk_params = array(
'user_ids' => $token['user_id'],
'fields' => 'user_id,first_name,last_name,photo_100',
'access_token' => $token['access_token']
);
$userInfo = json_decode(file_get_contents('https://api.vk.com/method/users.get?&v=5.0' . '?' . urldecode(http_build_query($vk_params))), true);
if (isset($userInfo['response'][0]['id'])) {
$userInfo = $userInfo['response'][0];
$result = true;
}
}
if ($result) {
$uid = $userInfo['id'];
$email = $token["email"];
$first_name = $userInfo['first_name'];
$last_name = $userInfo['last_name'];
$screen_name = $first_name . ' ' . $last_name;
$photo_100 = $userInfo['photo_100'];
$ref_1 = 0;
$db->Query("SELECT * FROM users WHERE uid = '{$uid}'");
$user_data = $db->FetchArray();
if($user_data['ban'] == '2'){
die(header('location: /ban'));
}
$db->Query("SELECT * FROM lider WHERE id = '1'");
$lider_data = $db->FetchArray();
$lider = $lider_data['user_id'];
$ref_1 = $lider;
$ref_2 = 0;
$ref_3 = 0;
if (isset($_COOKIE['referer']) && !empty($_COOKIE['referer'])) {
$ref = func::clear($_COOKIE['referer'], 'int');
$db->Query("SELECT * FROM users WHERE id = '{$ref}'");
if ($db->NumRows() > 0) {
$db->Query("SELECT * FROM users_ref WHERE user_id = '{$ref}'");
$ref_dat = $db->FetchArray();
$ref_1 = $ref;
$db->Query("UPDATE users SET refs = refs + 1 WHERE id = '{$ref_1}'");
}
}
$db->Query("SELECT id, uid FROM users WHERE uid = {$uid}");
if ($db->NumRows() > 0) {
$user = $db->FetchArray();
$id = $user['id'];
$_SESSION['user'] = $id;
$db->Query("INSERT INTO auth (user_id,ip,time,meta) VALUES ('{$id}','{$ip}','{$time}','{$meta}')");
$db->Query("UPDATE users SET email = '{$email}', screen_name = '{$screen_name}', photo_100 = '{$photo_100}', ip = '{$ip}' WHERE id = '{$id}'");
header('location: /account/earn/links');
} else {
if (isset($_COOKIE['httpref'])) {
$httpref = func::clear($_COOKIE['httpref']);
} else $httpref = '0';
$db->Query("INSERT INTO users (uid,email,screen_name,photo_100,ip,date_reg)
VALUES ('{$uid}','{$email}','{$screen_name}','{$photo_100}','{$ip}','{$time}')");
$id = $db->LastInsert();
$db->Query("INSERT INTO users_conf (user_id,httpref) VALUES ('{$id}','{$httpref}')");
$db->Query("INSERT INTO users_ref (user_id,ref_1,to_ref_1)
VALUES ('{$id}','{$ref_1}','0')");
$_SESSION['user'] = $id;
$db->Query("INSERT INTO auth (user_id,ip,time,meta) VALUES ('{$id}','{$ip}','{$time}','{$meta}')");
header('location: /account/earn/links');
}
}
}
$ok_url = 'http://www.odnoklassniki.ru/oauth/authorize';
$ok_params = array(
'client_id' => $config->ok_client_id,
'response_type' => 'code',
'redirect_uri' => $config->ok_redirect_uri
);
$data['ok_auth'] = $ok_url . '?' . urldecode(http_build_query($ok_params));
$fb_url = 'https://www.facebook.com/v2.11/dialog/oauth';
$fb_params = array(
'client_id' => $config->fb_client_id,
'redirect_uri' => $config->fb_redirect_uri,
'response_type' => 'code',
'scope' => 'email'
);
$data['fb_auth'] = $fb_url.'?'.urldecode(http_build_query($fb_params));
new gen('login', $data);
Warning: file_get_contents(https://oauth.vk.com/access_token?client_id=7013609&client_secret=mBqng5M0F9zBrdqz7P20&code=eda417aabf55f953e2&redirect_uri=https://www.seosam.ru/login): failed to open stream: HTTP request failed! HTTP/1.1 401 Unauthorized in /home/c/co18383/SeoSam/public_html/controllers/_loginCtrl.php on line 36
Еще раз отправьте запрос на авторизацию.MaxWatson написал(а):"error_description":"Code is invalid or expired."
Если ситуация повторится, то скрипт не получает CODE от ВК.
он получает CODE (в URL видно)APTEMOH написал(а):Еще раз отправьте запрос на авторизацию.
Если ситуация повторится, то скрипт не получает CODE от ВК.
MaxWatson написал(а):Код:https://oauth.vk.com/access_token?client_id=7013609&client_secret=mBqng5M0F9zBrdqz7P20&code=eda417aabf55f953e2&redirect_uri=https://www.seosam.ru/login
MaxWatson
Местный
- Сообщения
- 33
- Реакции
- 1
http_build_query — Генерирует URL-кодированную строку запроса (НЕ https!!! )MaxWatson написал(а):urldecode(https_build_query($vk_params)))
urldecode — Декодирование URL-кодированной строки
1. ошибка в синтаксисе
2. сначала кодируешь, потом декодируешь и на выхлопе то, что было первоначально
MaxWatson
Местный
- Сообщения
- 33
- Реакции
- 1
pligin написал(а):http_build_query — Генерирует URL-кодированную строку запроса (НЕ https!!! )
urldecode — Декодирование URL-кодированной строки
1. ошибка в синтаксисе
2. сначала кодируешь, потом декодируешь и на выхлопе то, что было первоначально
PHP:
$token = json_decode(file_get_contents('https://oauth.vk.com/access_token' . '?' . urldecode(http_build_query($vk_params))), true);
иMaxWatson написал(а):$token = json_decode(file_get_contents('https://oauth.vk.com/access_token' . '?' . urldecode(http_build_query($vk_params))), true);
PHP:
$token = json_decode(file_get_contents('https://oauth.vk.com/access_token' . '?' . http_build_query($vk_params)), true);
нахрен я это писал...pligin написал(а):2. сначала кодируешь, потом декодируешь и на выхлопе то, что было первоначально
MaxWatson
Местный
- Сообщения
- 33
- Реакции
- 1
Тоже, не робит.pligin написал(а):и
тоже?PHP:$token = json_decode(file_get_contents('https://oauth.vk.com/access_token' . '?' . http_build_query($vk_params)), true);
зачем декодировать то, что должно быть передано в URL? обычно используют urlencode()MaxWatson написал(а):urldecode
и что говорит?MaxWatson написал(а):Тоже, не робит.
- Статус
- В этой теме нельзя размещать новые ответы.