постинг на PHP в группу Одноклассников фото с текстом

Genius Ideaing
На сайте с 12.02.2024
Offline
15
235

Здравствуйте уважаемые ,

давно пощу текст в группу Одноклассники, но захотелось постить фото с текстом в группу в ОК:

нашел скрипт в сети:

<?php

// Параметры

$ok_access_token    = "";  // Наш вечный токен

$ok_private_key     = "";  // Секретный ключ приложения

$ok_public_key      = "";  // Публичный ключ приложения

$ok_group_id        = "";  // ID нашей группы

$message            = "hello";  // Сообщение к посту, можно с переносами строки

$filephoto = 'photo.jpg';

// Запрос

function getUrl($url, $type = "GET", $params = array(), $timeout = 30, $image = false, $decode = true)

{

    if ($ch = curl_init())

    {

        curl_setopt($ch, CURLOPT_URL, $url);

        curl_setopt($ch, CURLOPT_HEADER, false);


        if ($type == "POST")

        {

            curl_setopt($ch, CURLOPT_POST, true);


            // Картинка

            if ($image) {

                curl_setopt($ch, CURLOPT_POSTFIELDS, $params);

            }

            // Обычный запрос       

            elseif($decode) {

                curl_setopt($ch, CURLOPT_POSTFIELDS, urldecode(http_build_query($params)));

            }

            // Текст

            else {

                curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));

            }

        }


        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

        curl_setopt($ch, CURLOPT_USERAGENT, 'PHP Bot');

        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);


        $data = curl_exec($ch);


        curl_close($ch);


        // Еще разок, если API завис

        if (isset($data['error_code']) && $data['error_code'] == 5000) {

            $data = getUrl($url, $type, $params, $timeout, $image, $decode);

        }


        return $data;


    }

    else {

        return "{}";

    }

}


// Массив аргументов в строку

function arInStr($array)

{

    ksort($array);


    $string = "";


    foreach($array as $key => $val) {

        if (is_array($val)) {

            $string .= $key."=".arInStr($val);

        } else {

            $string .= $key."=".$val;

        }

    }


    return $string;

}


// 1. Получим адрес для загрузки 1 фото


$params = array(

    "application_key"   =>  $ok_public_key,

    "method"            => "photosV2.getUploadUrl",

    "count"             => 1,  // количество фото для загрузки

    "gid"               => $ok_group_id,

    "format"            =>  "json"

);


// Подпишем запрос

$sig = md5( arInStr($params) . md5("{$ok_access_token}{$ok_private_key}") );


$params['access_token'] = $ok_access_token;

$params['sig']          = $sig;


// Выполним

$step1 = json_decode(getUrl("https://apiok.ru/fb.do", "POST", $params), true);


// Если ошибка

if (isset($step1['error_code'])) {

    // Обработка ошибки

  print "Error: " . $step1['error_code'];

  return ;

}


// Идентификатор для загрузки фото

$photo_id = $step1['photo_ids'][0];


// 2. Закачаем фотку


// Предполагается, что картинка располагается в каталоге со скриптом

$params = array(

    "pic1" => new CURLFile("$filephoto"),

);


// Отправляем картинку на сервер, подписывать не нужно

$step2 = json_decode( getUrl( $step1['upload_url'], "POST", $params, 30, true), true);


// Если ошибка

if (isset($step2['error_code'])) {

    // Обработка ошибки

  print "Error: " . $step2['error_code'];

  return ;

}


// Токен загруженной фотки

$token = $step2['photos'][$photo_id]['token'];


// Заменим переносы строк, чтоб не вываливалась ошибка аттача

$message_json = str_replace("\n", "\\n", $message);


// 3. Запостим в группу

$attachment = '{

                    "media": [

                        {

                            "type": "text",

                            "text": "'.$message_json.'"

                        },

                        {

                            "type": "photo",

                            "list": [

                                {

                                    "id": "'.$token.'"

                                }

                            ]

                        }

                    ]

                }';


$params = array(

    "application_key"   =>  $ok_public_key,

    "method"            =>  "mediatopic.post",

    "gid"               =>  $ok_group_id,

    "type"              =>  "GROUP_THEME",

    "attachment"        =>  $attachment,

    "format"            =>  "json"

);


// Подпишем

$sig = md5( arInStr($params) . md5("{$ok_access_token}{$ok_private_key}") );


$params['access_token'] = $ok_access_token;

$params['sig']          = $sig;


$step3 = json_decode( getUrl("https://apiok.ru/fb.do", "POST", $params, 30, false, false ), true);


// Если ошибка

if (isset($step3['error_code'])) {

    // Обработка ошибки

  print "Error: " . $step3['error_code'];

  return ;


}


// Успешно

echo 'OK';


?>

Есть Идеи! Ищу хороших людей для практической реализации этих идей! Мой Телеграм: https://clck.ru/396JFF
Genius Ideaing
На сайте с 12.02.2024
Offline
15
#1

на PHP 5.6 скрипт отрабатывает без ошибок,

выдает на экран ОК,

но поста с фото в группе Одноклассников с текстом hello нету ((

почему это может происходить?

кто уже настраивал у себя на сайте постинг на PHP , о котором я веду речь,

подскажите пожалуйста,

почему не срабатывают коды постинга на PHP?

самое главное что при обращении к API ОК, 

ошибки не возвращаются.

все вроде хорошо, но поста нет в ленте группы

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий