PHP LIFX Power 的 HTTP CURL PUT 请求 On/Off

PHP HTTP CURL PUT request for LIFX Power On/Off

我正在尝试使用 PHP.

为我所有的 Lifx 灯泡 on/off 供电

API 文档 http://developer.lifx.com/ 说要使用 PUT 请求:

curl -u "c87c73a896b554367fac61f71dd3656af8d93a525a4e87df5952c6078a89d192:" \
       -X PUT \
       -d "state=on" \
       "https://api.lifx.com/v1beta1/lights/all/power"

现在可以在命令行中使用该 curl 命令。它会提示我输入密码,除非我在 "username" 中的冒号后添加它。

问题是当我尝试将该命令翻译成 PHP 时,像这样:

$authToken = 'c87c73a896b554367fac61f71dd3656af8d93a525a4e87df5952c6078a89d192:myFakePassword';
$ch = curl_init('https://api.lifx.com/v1beta1/lights/all/power');
$headers = array("selector=all&state=on",'Authorization: Bearer ' . $authToken);
curl_setopt($ch, CURLOPT_PUT, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);

这通过了,但我得到了 404 Not Found,Lifx 文档说这可能是格式错误的选择器。

注意:我能够通过 PHP 成功调用以切换电源 POST:

$authToken = 'c87c73a896b554367fac61f71dd3656af8d93a525a4e87df5952c6078a89d192';
$ch = curl_init('https://api.lifx.com/v1beta1/lights/all/toggle');
$headers = array("selector=all",'Authorization: Bearer ' . $authToken);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);

但我不想只切换灯光,我希望能够指定打开或关闭。我的 PUT 请求可能有什么问题?

感谢您的任何建议。

通过设置一些其他卷曲选项解决了这个问题:

$ch = curl_init($link);
$headers = array('Authorization: Bearer ' . $authToken);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$data = "state=on";
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);

$link 是 https://api.lifx.com/v1beta1/lights/all/power

$authToken 是我的 api 密钥