Nest Token已撤销,但api未返回“401未授权”响应

时间:2017-03-03 18:55:44

标签: php nest-api

我正在使用nest api构建应用程序。我们可以使用API​​成功授权用户,但是,如果用户从其帐户中撤消了应用授权,则API不会返回401未经授权的响应,而是返回完整响应,就像用户未撤消令牌访问一样。

以下是我测试的一步一步:

首先,用户访问我们的网站,我们要求auth url嵌套

https://home.nest.com/login/oauth2?client_id=%s&state=%s

其中两个字符串分别由​​产品密钥和随机状态字符串替换。

从那里,用户可以授权应用程序,然后它将重定向到产品的配置重定向网址。

然后我们查询一个长访问令牌,我们也得到了正确的。

然后用户可以要求查看其帐户中的设备列表(仅限摄像头),因此我们使用

查询用户的设备列表
    $curl = curl_init();
    curl_setopt_array($curl, array(
       CURLOPT_URL => "https://developer-api.nest.com/devices",
       CURLOPT_RETURNTRANSFER => true,
       CURLOPT_ENCODING => "",
       CURLOPT_MAXREDIRS => 10,
       CURLOPT_TIMEOUT => 30,
       CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
       CURLOPT_FOLLOWLOCATION => 1,
       CURLOPT_SSL_VERIFYPEER => 0,
       CURLOPT_SSL_VERIFYHOST => 0,
       CURLOPT_CUSTOMREQUEST => "GET",
       CURLOPT_FRESH_CONNECT => true,
       CURLOPT_FORBID_REUSE => true,
       CURLOPT_HTTPHEADER => array(
         "authorization: Bearer ".$token,
         "content-type: application/json",
         "Cache-Control: no-cache"
       ),
     ));

其中$ token是用户的长访问oauth令牌。

这与预期一样有效。直到用户从他的嵌套帐户中撤消应用程序授权。如果我们遵循API文档,此调用将返回401 Unauthorized响应。

但是,即使令牌现在无效,响应仍然是用户设备列表。这意味着即使他在技术上撤销了我们的访问权限,我们仍然可以访问用户的信息。因此,永远不会提示用户重新授权应用程序,因为这是直接在nest网站中进行的,并且没有事件回调,我们无法检测用户是否想要撤销我们应用程序的权限。

由于我们无法正确测试我们网站的功能,这引起了一些令人头疼的问题。理想情况下,我们必须向用户请求另一个令牌。

由于

0 个答案:

没有答案