За последние 24 часа нас посетили 22560 программистов и 1017 роботов. Сейчас ищут 749 программистов ...

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

Тема в разделе "PHP для новичков", создана пользователем MrFallen, 10 авг 2017.

  1. MrFallen

    MrFallen Новичок

    С нами с:
    5 апр 2017
    Сообщения:
    18
    Симпатии:
    0
    Добрый вечер. Решил немного автоматизировать процесс публикации конкурсов из Вконтакте на сайт mrandom.com.

    PHP:
    1. <?php
    2. $data_string = '{
    3.  "token": " ******",
    4.  "title": $title,
    5.  "url": $url,
    6.  "provider": "vkontakte",
    7.  "language": "ru_RU",
    8.  "category": 3,
    9.  "hashtags": "игры, игра",
    10.  "finish_conditions": {
    11.    "action": "participants",
    12.    "count": $count
    13.  },
    14.  "participation_conditions": {
    15.    "repost": $repost,
    16.    "like": $like,
    17.    "join": $join
    18.  },
    19.  "prizes": [
    20.    {
    21.      "name": $name,
    22.      "percent": false,
    23.      "count": $count_prizes
    24.    }
    25.  ]
    26. }'
    27.  
    28. $title = "";
    29. $url = "";
    30. $count = "";
    31. $repost = "";
    32. $like = "";
    33. $join = "";
    34. $name = "";
    35. $count_prizes = "";
    36.  
    37. if (isset($_POST['title'])) {
    38.     $title = $_POST['title'];
    39. }
    40. else {
    41.     $title = NULL;
    42. }
    43.  
    44. if (isset($_POST['url'])) {
    45.     $url = $_POST['url'];
    46. }
    47. else {
    48.     $url = NULL;
    49. }
    50.  
    51. if (isset($_POST['count'])) {
    52.     $count = $_POST['count'];
    53. }
    54. else {
    55.     $count = NULL;
    56. }
    57.  
    58. if (isset($_POST['repost'])) {
    59.     $repost = "true";
    60. }
    61. else {
    62.     $repost = "false";
    63. }
    64.  
    65. if (isset($_POST['like'])) {
    66.     $like = "true";
    67. }
    68. else {
    69.     $like = "false";
    70. }
    71.  
    72. if (isset($_POST['join'])) {
    73.     $join = "true";
    74. }
    75. else {
    76.     $join = "false";
    77. }
    78.  
    79. if (isset($_POST['name'])) {
    80.     $name = $_POST['name'];
    81. }
    82. else {
    83.     $name = NULL;
    84. }
    85.  
    86. if (isset($_POST['count_prizes'])) {
    87.     $count_prizes = $_POST['count_prizes'];
    88. }
    89. else {
    90.     $count_prizes = NULL;
    91. }
    92.  
    93. echo $title . "<br />";
    94. echo $url . "<br />";
    95. echo $count . "<br />";
    96. echo $repost . "<br />";
    97. echo $like . "<br />";
    98. echo $join . "<br />";
    99. echo $name . "<br />";
    100. echo $count_prizes . "<br /><br />----------------------------------------------<br />";
    101. $ch = curl_init('http://mrandom.com/contest/create?v=1');
    102. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    103. curl_setopt($ch, CURLOPT_POSTREDIR, 3);
    104. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    105. curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
    106. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    107. curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    108.     'Content-Type: application/x-www-form-urlencoded',
    109.     'Content-Length: ' . strlen($data_string)
    110. ));
    111. $result = curl_exec($ch);
    112. echo "Ответ на Ваш запрос: " . $result . "<br />" . "<br />";
    113. var_dump($result)
    114. ?>
    С формы заполняю поля и отправляю. Вроде бы всё правильно сделал, но получаю такой ответ от API:
    Код (Text):
    1. {"error":"Вы не авторизованы"}

    upload_2017-8-11_4-1-24.png
    Открыл документацию по API и заметил, что в ответе API нет кода ошибки. Как я понял, ошибка должна быть в таком формате: "{error: "Используемый токен недействителен", code: 1}", но мне приходит: {"error":"Вы не авторизованы"}. Параметра "code" просто нет. Что значит "Вы не авторизованы" и как это исправить?
     
    #1 MrFallen, 10 авг 2017
    Последнее редактирование модератором: 10 авг 2017
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.745
    Симпатии:
    1.319
    Адрес:
    Лень
    26 строка
    --- Добавлено ---
    112 хм
     
  3. MrFallen

    MrFallen Новичок

    С нами с:
    5 апр 2017
    Сообщения:
    18
    Симпатии:
    0
    А что с ними не так? Я скриншот приложил. Не думаю, что в этих строках ошибки.
     
  4. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    Лично я там точки с запятой не увидел
     
  5. MrFallen

    MrFallen Новичок

    С нами с:
    5 апр 2017
    Сообщения:
    18
    Симпатии:
    0
    Добавил ";", но ничего не изменилось. :(
     
  6. MrFallen

    MrFallen Новичок

    С нами с:
    5 апр 2017
    Сообщения:
    18
    Симпатии:
    0
    Нашел ошибку. Вместо token нужно было использовать access_token.
     
  7. MrFallen

    MrFallen Новичок

    С нами с:
    5 апр 2017
    Сообщения:
    18
    Симпатии:
    0
    Попробовал отправить данные через Postman. Всё работает через эту программу, но когда программа мне сгенерировала php-код, то ничего не работает.
    Пример кода:
    PHP:
    1. <?php
    2.  
    3. $curl = curl_init();
    4.  
    5.   CURLOPT_URL => "http://mrandom.com/contest/create?v=1",
    6.   CURLOPT_FOLLOWLOCATION => true,
    7.   CURLOPT_RETURNTRANSFER => true,
    8.   CURLOPT_ENCODING => "",
    9.   CURLOPT_MAXREDIRS => 10,
    10.   CURLOPT_TIMEOUT => 30,
    11.   CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    12.   CURLOPT_CUSTOMREQUEST => "POST",
    13.   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",
    14.   CURLOPT_HTTPHEADER => array(
    15.     "cache-control: no-cache",
    16.     "content-type: application/x-www-form-urlencoded",
    17.     "postman-token: a9303d8e-8281-d1ee-c67d-6ab87de59158"
    18.   ),
    19. ));
    20.  
    21. $response = curl_exec($curl);
    22. $err = curl_error($curl);
    23.  
    24. curl_close($curl);
    25.  
    26. if ($err) {
    27.   echo "cURL Error #:" . $err;
    28. } else {
    29.   echo $response;
    30. }
    Помогите разобраться пожалуйста. :(