php, mrandom api и плохой ответ

MrFallen

Проверенные
Сообщения
1,102
Решения
2
Реакции
697
Баллы
8,225
Добрый вечер. Решил немного автоматизировать процесс публикации конкурсов из Вконтакте на сайт mrandom.com.

PHP:
<?php
$data_string = '{
  "token": "7654778446bdbc6b6f5e271140d********2639a565253648d226a361c11d71b8dac16e77da04d5fc5e7eb",
  "title": $title,
  "url": $url,
  "provider": "vkontakte",
  "language": "ru_RU",
  "category": 3,
  "hashtags": "игры, игра",
  "finish_conditions": {
    "action": "participants",
    "count": $count
  },
  "participation_conditions": {
    "repost": $repost,
    "like": $like,
    "join": $join
  },
  "prizes": [
    {
      "name": $name,
      "percent": false,
      "count": $count_prizes
    }
  ]
}';
$title = "";
$url = "";
$count = "";
$repost = "";
$like = "";
$join = "";
$name = "";
$count_prizes = "";

if (isset($_POST['title'])) {
    $title = $_POST['title'];
}
else {
    $title = NULL;
}

if (isset($_POST['url'])) {
    $url = $_POST['url'];
}
else {
    $url = NULL;
}

if (isset($_POST['count'])) {
    $count = $_POST['count'];
}
else {
    $count = NULL;
}

if (isset($_POST['repost'])) {
    $repost = "true";
}
else {
    $repost = "false";
}

if (isset($_POST['like'])) {
    $like = "true";
}
else {
    $like = "false";
}

if (isset($_POST['join'])) {
    $join = "true";
}
else {
    $join = "false";
}

if (isset($_POST['name'])) {
    $name = $_POST['name'];
}
else {
    $name = NULL;
}

if (isset($_POST['count_prizes'])) {
    $count_prizes = $_POST['count_prizes'];
}
else {
    $count_prizes = NULL;
}

echo $title . "<br />";
echo $url . "<br />";
echo $count . "<br />";
echo $repost . "<br />";
echo $like . "<br />";
echo $join . "<br />";
echo $name . "<br />";
echo $count_prizes . "<br /><br />----------------------------------------------<br />";
$ch = curl_init('http://mrandom.com/contest/create?v=1');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POSTREDIR, 3);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/x-www-form-urlencoded',
    'Content-Length: ' . strlen($data_string)
));
$result = curl_exec($ch);
curl_close($ch);
echo "Ответ на Ваш запрос: " . $result . "<br />" . "<br />";
var_dump($result)
?>
С формы заполняю поля и отправляю. Вроде бы всё правильно сделал, но получаю такой ответ от API:
Код:
{"error":"Вы не авторизованы"}
upload_2017-8-11_3-57-59.png
и заметил, что в ответе API нет кода ошибки. Как я понял, ошибка должна быть в таком формате: "{error: "Используемый токен недействителен", code: 1}", но мне приходит: {"error":"Вы не авторизованы"}. Параметра "code" просто нет. Что значит "Вы не авторизованы" и как это исправить?
 
Последнее редактирование:
Попробовал отправить данные через Postman. Всё работает через эту программу, но когда программа мне сгенерировала php-код, то ничего не работает.
Пример кода:
PHP:
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://mrandom.com/contest/create?v=1",
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "access_token=76547***************************1b8dac16e77da04d5fc5e7eb&title=Games%20Delivery&url=https%3A%2F%2Fvk.com%2Fgames_delivery%3Fw%3Dwall-48871288_3336&provider=vkontakte&language=ru_RU&category=3&hashtags=%D0%B8%D0%B3%D1%80%D1%8B%2C%20%D0%B8%D0%B3%D1%80%D0%B0&participation_conditions=%7B%22repost%22%3Atrue%2C%22like%22%3Atrue%2C%22join%22%3Atrue%7D&prizes=%7B%22name%22%3A%22%D0%A1%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D0%B0%D1%8F%20%D0%B8%D0%B3%D1%80%D0%B0%22%2C%22percent%22%3Afalse%2C%22count%22%3A2%7D&finish_conditions=%7B%22action%22%3A%22participants%22%2C%20%22count%22%3A25%7D",
  CURLOPT_HTTPHEADER => array(
    "cache-control: no-cache",
    "content-type: application/x-www-form-urlencoded",
    "postman-token: a9303d8e-8281-d1ee-c67d-6ab87de59158"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу