PHP中的Wink API v2 Hello World
Wink API当前在版本2上 我的问题:如何通过PHP使用Wink API V2实现简单的“Hello World” 注释:PHP中的Wink API v2 Hello World,php,wink,Php,Wink,Wink API当前在版本2上 我的问题:如何通过PHP使用Wink API V2实现简单的“Hello World” 注释: Wink使用PubNub进行订阅(设备有事件) 使用OAuth2标准 网站/登录通常为“hokey”:(登录时将出错(&W):“身份验证失败!”) 在此处登录:&使用谷歌帐户(或其他) 然后将URL更改为: 有时候你不得不做几次 您需要请求应用程序API密钥才能使用API。我随后发了一封电子邮件,以便迅速获得批准 一旦您获得批准,您将获得:客户ID、客户机密和UR
- Wink使用PubNub进行订阅(设备有事件)
- 使用OAuth2标准
- 网站/登录通常为“hokey”:(登录时将出错(&W):“身份验证失败!”)
- 在此处登录:&使用谷歌帐户(或其他)
- 然后将URL更改为:
- 有时候你不得不做几次李>
- 您需要请求应用程序API密钥才能使用API。我随后发了一封电子邮件,以便迅速获得批准李>
- 一旦您获得批准,您将获得:客户ID、客户机密和URL以提供帮助
- API URL:
- 电子邮件支持:support@wink.zendesk.com(获取应用程序API密钥等)
- OAuth 2:
- Wink表示使用“授权码授权类型”
- Dox&示例:
- Wink API:
- 与此相关的问题:
- Github示例:(上次更新是在3年前;可能在以前的API版本上)
- 关于这方面的信息非常有限,因此我将回答自己的问题,希望能帮助他人。(这花了很长时间,因为那里没有任何好的信息。)这个例子有一个用户界面(Wink需要登录)。我希望有人能发布一个非用户界面版本(用于后台脚本等)
这将为您提供原始json输出,供您随意使用。这一个php页面最初将加载,带您进入Wink的登录(如果这不明显,您需要一个设备帐户),登录后,它将带您返回到同一页面,并带有代码,调用令牌,然后使用该令牌获取设备资源
在http/php服务器上创建://[YourServer]/wink\u helloworld.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>";
}
?>
//确保将此URL添加到Wink开发者门户中!(https://developer.wink.com/clients)
$redirect_uri=“http://[YourServer]/wink\u helloworld.php”;
//这是来自Wink开发者门户的
$client_id=“abcdefg”;
$wink_oauth_url=”https://api.wink.com/oauth2/token";
$client_secret=“hijklmnop”;
$devices\u url=”https://api.wink.com/users/me/wink_devices";
//需要创建一个状态变量,比如会话id。实际上应该是随机的!!
$randomstring=“xyzABC123”;
$state=base64_encode($randomstring);
/*_____________________________________________________________________________________________________________________________________ */
echo“Wink Hello World-Show设备”;
//若我们并没有代码,那个么将用户发送到登录页面
如果($_GET['code']==null |$_GET['code']==“”){
回声“;
返回;
}
$code=$_GET['code'];
//如果我们没有代币,就买一个吧
if($access_-token==null |$access_-token===“”){
$access_token=getAccessToken();
}
//让我们从我们的设备中获取一些数据!
getResource($access\u token);
/*_____________________________________________________________________________________________________________________________________ */
//领取代币
函数getAccessToken(){
全局$wink\u oauth\u url、$code、$client\u secret;
echo“getAccessToken()使用代码:$Code
”;
$curl=curl_init();
curl_setopt($curl,CURLOPT_URL,$wink_oauth_URL);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($curl,CURLOPT_头,FALSE);
curl_setopt($curl,CURLOPT_POST,TRUE);
curl_setopt($curl,CURLOPT_POSTFIELDS,”{
\“客户机密”:“$client\u secret\”,
\“授权类型\”:“授权代码\”,
\“代码\”:“$code\”
}");
curl_setopt($curl,CURLOPT_HTTPHEADER,数组(“内容类型:application/json”);
$response=curl\u exec($curl);
//var_dump($response);
formatResults($response);//调试输出
curl_close($curl);
返回json_decode($response)->access_令牌;
}
/*_____________________________________________________________________________________________________________________________________ */
//使用我们的代码和令牌获取资源
函数getResource($access\u token){
全球$devices\uURL;
echo“getResource()使用令牌:$access_Token”;
$header=array(“授权:承载{$access_token}”);
$curl=curl_init();
curl_setopt_数组($curl,数组(
CURLOPT_URL=>$devices_URL,
CURLOPT_HTTPHEADER=>$header,
CURLOPT_SSL_VERIFYPEER=>false,
CURLOPT_RETURNTRANSFER=>true
));
$response=curl\u exec($curl);
curl_close($curl);
formatResults($response);//调试输出
}
/*_____________________________________________________________________________________________________________________________________ */
//调试格式化输出函数
函数formatResults($json){
回声“;
echo json_encode(json_decode($json),json_PRETTY_PRINT);
回声“;
}
?>
关于这方面的信息非常有限,因此我将回答自己的问题,希望能帮助他人。(这花了很长时间,因为那里没有任何好的信息。)这个例子有一个用户界面(Wink需要登录)。我希望有人能发布一个非用户界面版本(用于后台脚本等)
这将为您提供原始json输出,供您随意使用。这一个php页面最初将加载,带您进入Wink的登录(如果这不明显,您需要一个设备帐户),登录后,它将带您返回到同一页面,并带有代码,调用令牌,然后使用该令牌获取设备资源
在http/php服务器上创建://[YourServer]/wink\u helloworld.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>";
}
?>
//确保将此URL添加到Wink开发者门户中!(https://developer.wink.com/clients)
$redirect_uri=“http://[Y