Хорошо, так что я нуб, когда дело доходит до APi. Я использовал api wundergrounds без проблемы. Однако я пытаюсь использовать REST API LogMeIn с php, и я должен делать что-то не так.
В инструкции сказано проверить свои учетные данные
Первый вызов должен быть GET / v1 / authentication, чтобы проверить правильность ваших учетных данных. Так, если ваш CompanyID равен 1234567890, а ваш PSK — abcde12345ABCDE12345 (обычно фактический PSK будет иметь длину 128 символов), действие может быть вызвано как:
$ curl https://secure.logmein.com/public-api/v1/authentication -i -H "Accept: application/JSON; charset=utf-8" -H "Authorization: {\"companyId\": 1234567890, \"psk\": \"abcde12345ABCDE12345\"}"
Где аргумент -H отправляет заголовок HTTP, а аргумент -i показывает заголовок ответа.
Отклик:
HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 16
Content-Type: application/JSON; charset=utf-8
Server: Microsoft-IIS/7.5
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM"'
X-Powered-By: ASP.NET
Date: Mon, 11 Nov 2013 15:12:57 GMT
{"success":true}
так вот мой PHP:
<?php
$json_string_LogMeIn = file_get_contents("https://secure.logmein.com/public-api/v1/authentication -i -H "Accept: application/JSON; charset=utf-8" -H "Authorization: {\"companyId\": 1234567890, \"psk\": \"abcde12345ABCDE12345\"}"");
$parsed_json_LogMeIn = json_decode($json_string_LogMeIn);
echo $parsed_json_LogMeIn;
?>
Я добавил свою балансовую единицу вместо 1234567890, а мой сгенерированный psk вместо abcde12345ABCDE12345
когда я открываю страницу php я ничего не получаю
file_get_contents()
не работает, как вы пытаетесь, используйте cURL
вместо этого, т.е.
$headers = array(
"Accept: application/JSON; charset=utf-8",
"Authorization: {\"companyId\": 1234567890, \"psk\": \"abcde12345ABCDE12345\"}",
);
$url = "https://secure.logmein.com/public-api/v1/authentication";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$data = curl_exec($ch);
curl_close($ch);
echo $data;
# {"success":false} / which is correct since I'm using a fake Authorization
Обновить:
Похоже, вам нужно включить curl
на php.ini
, пожалуйста, обратитесь к эта ссылка
Поэтому я сделал несколько вещей, чтобы исправить мою проблему:
Во-первых, я обновился до более новой версии PHP 7.1.1, в которой исправлен Curl, затем я получил ошибку сертификата. Я также нашел решение для этого.
Ваш код работает, хотя я немного его включил.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://secure.logmein.com/public-api/v1/authentication");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");$headers = array();
$headers[] = "Accept: application/JSON; charset=utf-8";
$headers[] = "Authorization: {\"companyId\": 1234567890, \"psk\": \"abcde12345ABCDE12345\"}";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
echo $result;