0

好的,所以当谈到 APi 时,我是个菜鸟。我使用 wundergrounds api 没有问题。但是我试图将 LogMeIn 的 REST API 与 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 页面时,我什么也没得到

4

2 回答 2

0

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

更新:

好像需要开启curlphp.ini请参考这个链接

于 2017-05-03T02:02:56.347 回答
0

所以我做了一些事情来解决我的问题:

第一次我升级到更新版本的 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;
于 2017-05-03T16:03:06.880 回答