0

PHP を使用して、すべての Lifx 電球の電源をオン/オフしようとしています。

API ドキュメントhttp://developer.lifx.com/では、PUT リクエストを使用するように指示されています。

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

そのcurlコマンドを使用すると、コマンドラインで機能します。「ユーザー名」のコロンの後にパスワードを追加しない限り、パスワードの入力を求められます。

問題は、そのコマンドを次のように 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 リクエストの何が問題になっている可能性がありますか?

ご提案ありがとうございます。

4

1 に答える 1

0

他のcurlオプションを設定することでこれを解決しました:

$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 キーです

于 2015-05-19T23:43:24.727 に答える