Недавно я работал с API kraken.io и пытаюсь интегрировать этот API с моей платформой PHP CodeIgniter. Итак, я следовал документации, но я застрял, когда я использовал curl
Это мой исходный код ниже ..
require_once(APPPATH.'libraries/kraken-php-master/Kraken.php');
$kraken = new Kraken("SOME_KEY", "SOME_SECRET");$params = array(
"file" => base_url()."include/".$dataIn['logo'],
"wait" => true
);
$dataj='{"auth":{"api_key": "SOME_KEY", "api_secret": "SOME_SECRET"},"file":'.base_url()."include/".$dataIn['logo'].',wait":true}';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.kraken.io/v1/upload");
curl_setopt($ch, CURLOPT_HTTPHEADER,array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $dataj);
$response = curl_exec($ch);
curl_close($ch);
$data = $kraken->upload($params);
print_r($response);exit();
И я получил этот результат
"{"success":false,"message":"Incoming request body does not contain a valid JSON object"}1"
Так может кто-нибудь, пожалуйста, помогите мне,
И спасибо заранее,
НЕ РАЗМЕЩАЙТЕ API_KEY И API_SECRET
Сообщение об ошибке совершенно ясно, ваш объект JSON недействителен. Например, это будет действительный объект JSON для вашего запроса:
{
"auth": {
"api_key": "SOME",
"api_secret": "SECRET"},
"file": "somefile.txt",
"wait": true
}
В своем php-коде вы настраиваете массив $ params, но затем не используете его. Попробуй это:
$dataj='{"auth":{"api_key": "SOME_KEY", "api_secret": "SOME_SECRET"},"file":"' . $params["file"]. '", "wait":true}';
Вы можете подтвердить свой JSON ЗДЕСЬ
Вы должны использовать json_encode
функция для генерации ваших данных JSON
$dataj = json_encode([
"auth" => [
"api_key" => "API_KEY",
"api_secret" => "API_SECRET"],
"file" => base_url() . "include/" . $dataIn['logo'],
"wait" => true
]);
РЕДАКТИРОВАТЬ:
Вот пример из https://kraken.io/docs/upload-url так что вам не нужно использовать curl
require_once("Kraken.php");
$kraken = new Kraken("your-api-key", "your-api-secret");
$params = array(
"file" => "/path/to/image/file.jpg",
"wait" => true
);
$data = $kraken->upload($params);
if ($data["success"]) {
echo "Success. Optimized image URL: " . $data["kraked_url"];
} else {
echo "Fail. Error message: " . $data["message"];
}