第三方设备对接小度音箱 记录

小度音箱对接Dueros开放平台有相关资料,包括认证流程和协议介绍。

技能开放平台 (baidu.com)

云云对接

根据资料,直接接入需要特定硬件支持,所以选用云云对接方式。

DuerOS开放平台 | 资源中心 (baidu.com)

云云对接主要框架是:小度音箱——技能云——设备云——设备

技能云服务器是小度音箱发出请求时的服务器,技能云服务器收到请求后将请求封装成上面所说的开放协议发送给设备云服务器,我们需要实现的就是设备云服务器对开放协议的解析和封装。

OAuth2.0

设备云服务器如何实现,按照开放协议即可,主要还是介绍控制请求之前的认证授权设置。

小度音箱认证授权采用OAuth2.0,JAVA和PHP都有相关包接口,博主以C来实现OAuth2.0认证服务器。

OAuth2.0的认证分为四种授权模式,对接小度音箱主要用授权码Code模式,其他三种略过。

OAuth2.0 Code流程如下图:

在这里提醒一下,服务器需要https且合法的ssl证书,自签名无效。

博主服务器使用的花生壳免费域名,阿里云的免费ssl证书,属于白嫖。

OAuth2.0 服务器和技能

按照上面流程,肯定是搭建一个HTTPS服务器,这里博主移植了libevent来封装服务器,很好用,安利一波。

搭建好之后先不用处理url的请求,回到Dueros,创建技能,因为OAuth2.0的授权是在创建的技能中发起的:技能开放平台 (baidu.com)

按照提示填写对应的设置:

授权地址指的是OAuth2.0服务器的地址,client_id和client_Secret是授权时可用作验证的用户标识,其实可以不校验。

Token地址用来获取访问令牌和刷新令牌的服务器,博主把它也集成到OAuth2.0服务中。

WebService是资源/设备云服务器的地址,同样也集成到了OAuth2.0服务器中。 

回调地址是授权之后需要重定向的处理地址,技能自生成的,后面会讲到。

授权调试

之前说到,HTTPS服务器没有处理url,技能创建后点击授权肯定是没反应的,这时就可以调试打印授权的请求数据包进行处理的封装了。

授权:

/authorize?client_id=xiaodu&response_type=code&redirect_uri=https%3A%2F%2Fxiaodu.baidu.com%2Fsaiya%2Fauth%2Ffd6bf3b312813ff35869d264d037667b&state=faabeba62d428ed27feb8296d36a8198&dueros_uid=faabeba62d428ed27feb8296d36a8198&scope=all

从请求看出,rediret_uri是回调地址,那么我们需要返回302重定向的包,根据OAuth2.0流程,我们还需要返回code,所以http header添加Location,值为redirect_url?code=xxxxxx

令牌:

/token?client_id=xiaodu&grant_type=authorization_code&client_secret=xiaodu&redirect_uri=https%3A%2F%2Fxiaodu.baidu.com%2Fsaiya%2Fauth%2Ff331729a2d258017b270552bc7872bd3&dueros_uid=faabeba62d428ed27feb8296d36a8198&code=xiaodu


从请求看出,code是授权码,用来获取令牌,那么我们需要返回令牌,http响应200,body为json

{

            "access_token", "12345678-1234-5678-1234-1234567890ab",
            "token_type", "bearer",
            "refresh_token", "87654321-1234-5678-4321-1234567890ab",
            "scope", "all",
            "expires", :3600

}

封装处理了上面两步,再次返回技能点击授权,成功后出现以下界面:

真机调试

此时按照资料进行真机调试,发现设备,控制设备,查询设备等指令,你的资源服务器也就是设备云服务器都会受到对应的协议数据,一一对应处理即可。

本文省略业务逻辑上的流程,只求快速对接打通节点,可以按照这些步骤先调通链路,如果那个环节没通,评论告诉我。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
### 回答1: 第三方系统对接CAS(Central Authentication Service)RESTful接口是指将第三方系统与CAS系统进行集成,使得第三方系统可以通过调用CAS的RESTful接口来实现用户认证和授权功能。 第三方系统与CAS系统对接的过程通常包括以下几个步骤: 1. 配置CAS服务器:在CAS服务器上进行相关配置,包括定义用户认证的方式(例如用户名密码、单点登录等)和认证成功后的返回数据格式等。 2. 接入CAS客户端:在第三方系统中集成CAS客户端,通过CAS客户端与CAS服务器建立连接。 3. 请求认证:当用户访问第三方系统时,第三方系统将用户请求重定向到CAS服务器的认证接口,进行用户认证。 4. 获取票据:用户在CAS服务器上成功认证后,CAS服务器会返回一个票据(ticket),第三方系统将该票据作为参数发送给CAS服务器的票据校验接口。 5. 校验票据:CAS服务器收到票据后,通过票据校验接口验证票据的有效性,并返回相应的认证结果给第三方系统。 6. 授权访问:验证成功后,第三方系统可以根据CAS服务器返回的用户信息来进行授权访问,如获取用户的角色、权限等。 7. 注销认证:当用户退出第三方系统时,第三方系统需要调用CAS的注销接口来注销用户的认证信息。 通过以上步骤,第三方系统可以通过CAS的RESTful接口进行用户认证和授权,实现了统一的登录认证和单点登录功能,提升了系统的安全性和用户体验。 ### 回答2: 第三方系统对接CAS RESTful接口,首先需要了解CAS(Central Authentication Service)是什么。CAS是一种单点登录(Single Sign-On)协议,提供了认证和授权的功能,可以实现不同系统之间的用户身份单点登录和安全交互。 对接CAS RESTful接口的过程一般包括以下几个步骤: 1.了解CAS RESTful接口文档:首先需要仔细阅读CAS RESTful接口文档,了解接口的功能、参数及返回值。 2.注册第三方系统:在CAS系统中注册第三方系统的信息,包括系统名称、系统URL等。注册后会获得一个唯一的系统凭证。 3.获取CAS登录凭证:第三方系统需要通过CAS RESTful接口向CAS系统发送登录请求,包括用户名和密码等信息。CAS系统会验证用户身份,并返回给第三方系统一个登录凭证,通常是一个token或者ticket。 4.验证CAS登录凭证:第三方系统拿到登录凭证后,需要将凭证作为参数发送给CAS RESTful接口进行验证。如果凭证有效,CAS系统会返回相应的用户信息第三方系统。 5.其他接口调用:一旦用户身份验证成功,第三方系统可以调用CAS RESTful提供的其他接口,进行用户授权、访问受限资源等操作。 6.处理CAS回调:CAS系统会通过回调机制通知第三方系统用户的登录状态变化等重要事件。第三方系统需要相应地处理这些回调,确保与CAS系统的同步更新。 总的来说,对接CAS RESTful接口需要进行注册、登录凭证获取和验证、其他接口调用等步骤。通过正确地使用CAS RESTful接口第三方系统可以实现与CAS系统的安全交互和用户身份认证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值