Wink API v2 Hello World в переполнении стека

Wink API в настоящее время на версии 2.

Мой вопрос: Как вы можете сделать простой «Hello World» с Wink API V2 через PHP?

Заметки:

  • Wink использует PubNub для подписки (устройства имеют событие)
  • Использует стандарт OAuth2
  • Сайт / Логин часто «hokey»: (& произойдет ошибка при входе в систему: «Ошибка аутентификации!»)
  • Вам нужно будет запросить ключ API приложения, чтобы использовать API. Я отправил электронное письмо, чтобы быстро его утвердить.
  • Как только вы будете одобрены, вы получите: Идентификатор клиента, Секрет клиента, & URL, чтобы помочь
  • URL API: https://api.wink.com/
  • Поддержка по электронной почте: [email protected] (Получить ключ API приложения и т. Д.)
  • OAuth 2:

Ссылки по теме:

-1

Решение

Информация об этом крайне ограничена, поэтому я отвечу на свой вопрос в надежде помочь другим. (Это заняло много времени, так как там не было никакой хорошей информации.) Этот пример имеет пользовательский интерфейс (требуется Wink для входа в систему). Я надеюсь, что кто-то может опубликовать версию без пользовательского интерфейса (для фоновых сценариев и т. Д.).

Это даст вам необработанный вывод json, который вы можете использовать по своему усмотрению. Эта одна php-страница будет первоначально загружена, вы войдете в логин Wink (вам нужна учетная запись на ваших устройствах, если это было неочевидно), после регистрации она вернет вас на эту же страницу с кодом, вызовет токен затем используйте этот токен для получения ресурсов устройства.

Создайте: //[YourServer]/wink_helloworld.php на вашем http / php сервере.

wink_helloworld.php:

//Make sure to add this exact URL to your Wink Developer Portal! (https://developer.wink.com/clients)
$redirect_uri = "http://[YourServer]/wink_helloworld.php";
// This is from Wink Developer Portal
$client_id = "abcdefg";
$wink_oauth_url = "https://api.wink.com/oauth2/token";
$client_secret = "hijklmnop";
$devices_url = "https://api.wink.com/users/me/wink_devices";
//need to create a state variable, like a session id. should actually be random tho!!
$randomstring="xyzABC123";
$state = base64_encode($randomstring);
/*_____________________________________________________________________________________________________________________________________ */

echo "<h2>Wink Hello World - Show Devices</h2>";

//If we don't have a code, then send user to login page
if($_GET['code'] == null | $_GET['code'] == ""){
echo "<a href='https://api.wink.com/oauth2/authorize?response_type=code&client_id=".$client_id."&redirect_uri=$redirect_uri&state=".$state."'>Login</a>";
return;
}
$code = $_GET['code'];
//if we dont have a token, lets get one
if($access_token == null | $access_token == ""){
$access_token = getAccessToken();
}
// lets get some data from our devices!
getResource($access_token);
/*_____________________________________________________________________________________________________________________________________ */
// Get token
function getAccessToken() {
global $wink_oauth_url, $code, $client_secret;
echo "<b>getAccessToken()</b> Using Code: $code<br>";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $wink_oauth_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_HEADER, FALSE);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, "{
\"client_secret\": \"$client_secret\",
\"grant_type\": \"authorization_code\",
\"code\": \"$code\"}");
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
$response = curl_exec($curl);
//var_dump($response);
formatResults($response);       //debug output
curl_close($curl);
return json_decode($response)->access_token;
}
/*_____________________________________________________________________________________________________________________________________ */
// Get Resource(s) with our code & token
function getResource($access_token) {
global $devices_url;
echo "<b>getResource()</b> Using Token: $access_token<p>";
$header = array("Authorization: Bearer {$access_token}");
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $devices_url,
CURLOPT_HTTPHEADER => $header,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_RETURNTRANSFER => true
));
$response = curl_exec($curl);
curl_close($curl);
formatResults($response);       //debug output
}

/*_____________________________________________________________________________________________________________________________________ */
//debug formatted output functions
function formatResults($json){
echo "<pre>";
echo json_encode(json_decode($json), JSON_PRETTY_PRINT);
echo "</pre>";
}

?>
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]