0

申请背景:

嵌入式系统将作为客户端连接到 nest-api 以检索所需的数据。该嵌入式系统可以连接到 wifi 网络,并提供一个 Web 界面,用户可以通过该界面进行身份验证。

对于身份验证,当前用户被定向到

https://home.nest.com/login/oauth2 ...

用户可以执行授权程序并获得一个 8 字符的 PIN。然后要求用户在文本框中输入此 PIN 并将其提交给嵌入式 Web 服务器,然后请求 access_token(使用 C 平台)。

这个问题有两个问题:

1)有没有办法从客户端浏览器也执行对 access_token 的请求,并且只将 access_token 返回给嵌入式系统?用户输入 PIN 并提交后可以请求 access_token 的任何 Javascript 代码?

2)第二个问题与缺乏自动化有关。用户需要在 Web 界面中输入 PIN。有没有办法使用一些脚本自动从网站中提取 PIN。例如,打开嵌入在另一个页面中的 /login/oauth2 页面并在主页上运行脚本以继续扫描嵌入的页面,直到 PIN 可用(即用户登录并授予权限)。一旦它可用,就可以将其复制并返回到设备 web 并自动请求 access_token。

我知道这种类型的自动化可以通过基于 Web 的身份验证来实现,但据我了解,这需要代理服务器来重定向 URI。这个想法是使设备自给自足,而无需维护另一台服务器。

4

1 回答 1

0
  1. 是的,有关如何在 JavaScript 中使用 OAuth 令牌的示例,请参阅control-jquery示例代码
  2. Nest 允许您使用以 OAuth 重定向 URI 开头http://localhosthttps://作为 OAuth 重定向 URI 的地址。您可以在本地运行 Web 服务器,也可以监视 WebView 以获取您选择的重定向 URI 模式并解析结果。
于 2014-11-17T18:05:08.520 回答