использование imgur api v3 для анонимной загрузки изображений с помощью php
Я планирую загружать изображения в imgur анонимно, используя свой api, я зарегистрировал свое приложение в категории анонимной загрузки и получил идентификатор клиента и секрет клиента, как использовать php для загрузки изображения в imgur и получения прямого url к изображению? может ли кто-нибудь предложить ссылки на любой пример? это то, что я пытался сделать, но я получаю ошибку "фатальная ошибка: максимальное время выполнения 30 секунд превышен"
<?php
$client_id = :client_id; //put your api key here
$filename = "images/q401x74ua3402.jpg";
$handle = fopen($filename, "r");
$data = fread($handle, filesize($filename));
//$data is file data
$pvars = array('image' => base64_encode($data), 'key' => $client_id);
$timeout = 30;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://api.imgur.com/3/upload.json');
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $pvars);
$xml = curl_exec($curl);
$xmlsimple = new SimpleXMLElement($xml);
echo '<img height="180" src="';
echo $xmlsimple->links->original;
echo '">';
curl_close ($curl);
?>
3 ответов
отправить client_id
в переменной post проблема. Он должен быть отправлен в заголовке запроса. Кроме того, вы запрашиваете ответ JSON, но пытаетесь проанализировать его как XML.
<?php
$client_id = "FILLMEIN";
$image = file_get_contents("img/cool.jpg");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.imgur.com/3/image.json');
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Client-ID ' . $client_id));
curl_setopt($ch, CURLOPT_POSTFIELDS, array('image' => base64_encode($image)));
$reply = curl_exec($ch);
curl_close($ch);
$reply = json_decode($reply);
printf('<img height="180" src="%s" >', $reply->data->link);
обновление 1
живу функциональный код С и источник на основе этого кода отладки.
нашел ошибку, мне нужно отправить данные авторизации в качестве заголовка, например, код
<?php
$client_id = 'xxxxxxxx';
$file = file_get_contents("test-image.png");
$url = 'https://api.imgur.com/3/image.json';
$headers = array("Authorization: Client-ID $client_id");
$pvars = array('image' => base64_encode($file));
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL=> $url,
CURLOPT_TIMEOUT => 30,
CURLOPT_POST => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POSTFIELDS => $pvars
));
$json_returned = curl_exec($curl); // blank response
echo "Result: " . $json_returned ;
curl_close ($curl);
?>
Если у вас есть проблемы с вышеуказанным скриптом, попробуйте curl skip verified SSL следующим образом:
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);