$return['chars'] =array();
if(preg_match_all('/<li class="b-properties__item">[^\w]+<span class="b-properties__label">[^\w]+<span>(.*?)<\/span>[^\w]+<\/span>[^\w]+<span class="b-properties__value">(.*?)<\/span>[^\w]+<\/li>/im', $out, $chars))
{
$return['charnames'] = $chars[1];
$return['charvals'] = $chars[2];
}
protected $apiUrl = 'https://api.ok.ru/fb.do?';
public function getalbums( Request $request ) {
$userok = Userok::where('useroks.user_id', '=', $request->user_id)->first();
$paramsArray = array(
'application_key' => $this->params['application_key'],
'method' => 'photos.getAlbums',
'uid' => $userok->ok_id
);
ksort($paramsArray);
foreach($paramsArray as $k=>$v) {
$paramsStr .= $k . "=" . $v;
}
$sig = strtolower(
md5(
$paramsStr
. md5(
$userok-access_token
. $this->connectionData['client_secret']
)
)
);
$paramsArray['access_token'] = $userok-access_token;
$paramsArray['sig'] = $sig;
return $this->sendRequest(
$this->apiUrl,
$paramsArray,
'POST'
);
print_r($paramsArray);
}
protected function sendRequest($url = '', $params = array(), $method = 'POST') {
if(is_array($params)) {
$params = http_build_query($params);
}
$ch = curl_init();
if($method == 'GET') {
$url .= $params;
} else if($method == 'POST') {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
curl_close($ch);
return json_decode($result, true);
}
{"error_code":103,"error_msg":"PARAM_SESSION_KEY : Invalid session key","error_data":null}
class oFileHelper extends Controller
{
//
private $name;
private $mime;
private $content;
public function __construct($name, $mime=null, $content=null)
{
// Проверяем, если $content=null, значит в переменной $name - путь к файлу
if(is_null($content))
{
// Получаем информацию по файлу (путь, имя и расширение файла)
$info = pathinfo($name);
// проверяем содержится ли в строке имя файла и можно ли прочитать файл
if(!empty($info['basename']) && is_readable($name))
{
$this->name = $info['basename'];
// Определяем MIME тип файла
$this->mime = mime_content_type($name);
// Загружаем файл
$content = file_get_contents($name);
// Проверяем успешно ли был загружен файл
if($content!==false) $this->content = $content;
else throw new Exception('Don`t get content - "'.$name.'"');
} else throw new Exception('Error param');
} else
{
// сохраняем имя файла
$this->name = $name;
// Если не был передан тип MIME пытаемся сами его определить
if(is_null($mime)) $mime = mime_content_type($name);
// Сохраняем тип MIME файла
$this->mime = $mime;
// Сохраняем в свойстве класса содержимое файла
$this->content = $content;
};
}
// Метод возвращает имя файла
public function Name() { return $this->name; }
// Метод возвращает тип MIME
public function Mime() { return $this->mime; }
// Метод возвращает содержимое файла
public function Content() { return $this->content; }
}
class BodyPost extends Controller
{
//
//Метод формирования части составного запроса
public static function PartPost($name, $val)
{
$body = 'Content-Disposition: form-data; name="' . $name . '"';
// Проверяем передан ли класс oFile
if($val instanceof oFile)
{
// Извлекаем имя файла
$file = $val->Name();
// Извлекаем MIME тип файла
$mime = $val->Mime();
// Извлекаем содержимое файла
$cont = $val->Content();
$body .= '; filename="' . $file . '"' . "\r\n";
$body .= 'Content-Type: ' . $mime ."\r\n\r\n";
$body .= $cont."\r\n";
} else $body .= "\r\n\r\n".urlencode($val)."\r\n";
return $body;
}
// Метод формирующий тело POST запроса из переданного массива
public static function Get(array $post, $delimiter='-------------0123456789')
{
if(is_array($post) && !empty($post))
{
$bool = false;
// Проверяем есть ли среди элементов массива файл
foreach($post as $val) if($val instanceof oFile) {$bool = true; break; };
if($bool)
{
$ret = '';
// Формируем из каждого элемента массива, составное тело POST запроса
foreach($post as $name=>$val)
$ret .= '--' . $delimiter. "\r\n". self::PartPost($name, $val);
$ret .= "--" . $delimiter . "--\r\n";
} else $ret = http_build_query($post);
} else throw new \Exception('Error input param!');
return $ret;
}
}
function get_curl_mp($url, $file) {
//use App\Http\Controllers\Apps\Helpers\oFileHelper;
//use App\Http\Controllers\Apps\Helpers\BodyPost;
// Генерируем уникальную строку для разделения частей POST запроса
$delimiter = '-------------'.uniqid();
// Формируем объект oFile содержащий файл
$file = new Apps\Helpers\oFileHelper($file, 'image/jpeg', 'Content file');
// Формируем тело POST запроса
$post = Apps\Helpers\BodyPost::Get(array('file1'=> $file), $delimiter);
// Инициализируем CURL
$ch = curl_init();
// Указываем на какой ресурс передаем файл
curl_setopt($ch, CURLOPT_URL, $url);
// Указываем, что будет осуществляться POST запрос
curl_setopt($ch, CURLOPT_POST, 1);
// Передаем тело POST запроса
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
/* Указываем дополнительные данные для заголовка:
Content-Type - тип содержимого,
boundary - разделитель и
Content-Length - длина тела сообщения */
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data; boundary=' . $delimiter,
'Content-Length: ' . strlen($post)));
// Отправляем POST запрос на удаленный Web сервер
return curl_exec($ch);
}
public function photosSave($params)
{
return $this->request('photos.save', $params);
}
$save = $vk->photosSave([
//'user_id' => $user_id,
'photos_list' => $upload['photos_list'],
'server' => $upload['server'],
'album_id'=>$album_id,
'hash' => $upload['hash']
]
);
public function uploadFiles($url, $files)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
$sendfiles = array();
$sendfilesalt = array();
for( $i = 0; $i < count($files); $i++ ) {
$sendfiles[] = ['file'.($i+1) => new \CURLFile($file[$i]) ];
$sendfilesalt[] = ['file'.($i+1) => "@$file[$i]"];
}
if (class_exists('\CURLFile')) {
curl_setopt($ch, CURLOPT_POSTFIELDS, $sendfiles);
} else {
curl_setopt($ch, CURLOPT_POSTFIELDS, $sendfilesalt);
}
$data = curl_exec($ch);
curl_close($ch);
return json_decode($data, true);
}
$images[0] = '/var/www/broker/storage/app/public/cart/mg3s1YXErNg8L2i1bQ4bPJsrsoESwf7GWFhcZcvN.jpeg';
$images[1] = '/var/www/broker/storage/app/public/cart/x96X8d8G8ocE9xsmKfr3Xt5vA2NulY4v92PqTdbk.jpeg';
$upload = $vk->uploadFiles($uploadurl, $images);
Array ( [server] => 850620 [photos_list] => [] [aid] => 268954506 [hash] => bb59d9dcfd33a4b6a8b3f45b82983598 )
https://oauth.vk.com/authorize?client_id=*&display=page&redirect_uri=https://api.vk.com/blank.html&scope=offline,wall,photos&response_type=token&v=5.101&state=
https://oauth.vk.com/authorize?client_id=ID_ПРИЛОЖЕНИЯ&display=page
&redirect_uri=https://api.vk.com/blank.html&scope=offline,wall,photos
&response_type=code
https://oauth.vk.com/authorize?client_id=ID_ПРИЛОЖЕНИЯ&display=page
&redirect_uri=https://api.vk.com/blank.html&scope=offline,wall,photos
&response_type=code
https://api.vk.com/blank.html#code=577ccf6d547758816e8
https://oauth.vk.com/authorize?client_id=ID_ПРИЛОЖЕНИЯ&display=page
&redirect_uri=https://api.vk.com/blank.html&scope=offline,wall,photos
&response_type=code
public function vkauth(Request $request) {
$data['user'] = Auth::user();
$data['session_id'] = $request->session()->all()['_token'];
if( !empty($data['user'] ) ) {
$data['user']->token = User::find($data['user']->id)->access_token->token;
$data['api-string'] = 'data-ownerid='.$data['user']->id.' data-userid='.$data['user']->id.' data-token='.$data['user']->token.' data-stoken='.$data['session_id'];
} else {
$data['api-string'] = 'data-stoken='.$data['session_id'];
}
$appID = '7132598';
$secretKEY = 'Секретный код';
if ( !empty($request->code) ) {
$code = $request->code;
$sURL = "https://oauth.vk.com/access_token?client_id={$appID}&client_secret={$secretKEY}&v=5.101&grant_type=client_credentials&scope=offline,photos,wall,audio,video,friends";
$oResponce = json_decode($this->get_curl($sURL));
$check = UserVk::where('user_id', '=', $data['user']->id)->get();
if ( count($check) == 0 ) {
$UserVk = new UserVk;
$UserVk->user_id = $data['user']->id;
$UserVk->access_token = $oResponce->access_token;
$UserVk->save();
} else {
$UserVk = UserVk::find($check[0]->id);
$UserVk->access_token = $oResponce->access_token;
$UserVk->save();
}
print_r($oResponce);
//return redirect('/collections');
}
}