# 授权

Smart Home Skill API遵循OAuth2.0规范。 从Smart Home Skill API发送到技能适配器的每个请求都包含OAuth访问令牌。 此外,任何可云控设备的设备云都必须支持 授权码授权模式。 确保实施OAuth的第三方提供商已经将分配给智能家居技能的OAuth重定向地址添加到白名单中。 您可以在开发人员门户上的应用程序的配置页面上找到此URL。 要了解有关腾讯小微身份验证如何工作的更多信息,请参阅{文档待定}。

# 厂商授权小微

用户在厂商提供的授权url(在注册技能时填写)登录自己的厂商账号,完成授权处理,技能适配器厂商收到请求处理完毕后,调用redirect_uri,并返回授权码给小微. redirect_uri示例:https://xiaowei.weixin.qq.com/api/iot/xw_iot_third_party&scope=&state=3624673158dab4796-fa37-1441-57b0-9c5139518006

# 小微获取access token

向技能适配器厂商的access_token_uri地址发送post请求以获取acces token,Content-Type 为application/json。请求参数为grant_type、client_id、client_secret、code、redirect_uri 一个access token 请求参数示例:

access_token_uri: https://xx.xxxxxxx.com/app/oauth.reqaccess
{
    "client_id": "L40KnWmoJWRjrwY8sHj****",
    "client_secret": "KPltGeJqMJeOYHOk05**o***",
    "code": "8962478_FO4_fwwxqKortx9Oeo1*****",
    "grant_type": "authorization_code",
    "redirect_uri": ""
}

# 小微刷新access token

向技能适配器厂商的access_token_uri地址发送post请求以刷新token,Content-Type 为application/json。请求参数为grant_type、client_id、client_secret、refresh_token 刷新token请求参数示例:

access_token_uri: https://xx.xxxxxxx.com/app/oauth.reqaccess
{
    "client_id": "L40KnWmoJWRjrwY8sHj****",
    "client_secret": "KPltGeJqMJeOYHOk05**o***",
    "grant_type": "refresh_token",
    "refresh_token": "*********"
}

# 技能适配器厂商返回access token

服务厂商返回access token,包含字段为refresh_token、expires_in、access_token 返回数据示例:

{
    "refresh_token": "8962478_FO4_EZBuGz0sp2vqEq*******",
    "expires_in": 15552000,
    "access_token": "8962478_FO4_EZBuGz0sp2vqEqx*******"
}

# 小微授权厂商

小微侧进行接口鉴权,厂商在请求小微接口之前,必须获取token。token有效期一般为72000,如果token过期,需要再次调用获取token接口,重新获取有效token.

# 厂商获取token

获取token接口地址

https://cloudim.weixin.qq.com/cloudim/cloudxw-bin/xwapi/iot/xw_iot_brand_token

Head说明

参数名称
Content-Type application/json

# ReportStateGetTokenRequest:

{
    "xw_transfer_req": {
        "iot_req": {
            "secret": "6fbe1772dcf2912267abf7e833675a56",           //为sha256(secret+appid+当前时间戳)
            "appid": 40,
            "comm_type": 14,               //必须为14 
            "timestamp": "1580533086"   
        }
    }
}

说明

属性 描述 是否必需
xw_transfer_req.iot_req.secret secret由腾讯小微智能家居平台发放,此字段值为sha256(secret+appid+当前时间戳)值
xw_transfer_req.iot_req.appid 腾讯小微智能家居平台发放,获取token必须 int型
xw_transfer_req.iot_req.comm_type 必须为14
xw_transfer_req.iot_req.timestamp 当前时间戳

# ReportStateGetTokenResponse:

{
    "code": 0,
    "acccessToken": "string",
    "expires_in": 72000,
    "msg": "获取token成功"
}

说明

属性 描述 是否必需
code 返回的状态码,0:成功, 1: 获取token失败:缺少必要参数或者格式错误,2: 获取token失败,6:系统错误
acccessToken 返回的token数据。
expires_in 有效时间。
msg 提示信息。当code为0时,提示"获取token成功"。当code为1时,提示"获取token失败:缺少必要参数或者格式错误",当code为2时,获取token失败。当code为6时,系统错误。

# “腾讯小微”小程序兼容性

强烈建议选择跳转开发者自有智能家居小程序来完成用户授权。可让用户更短的路径完成授权。

如采用跳转web授权页面来完成用户授权,需要在原有厂商技能用户授权登录页的授权域名根目录下,放置 《小微认证文件》(对应文件名和内容都不可更改),并发送邮件到 xiaowei_smarthome@tencent.com 申请开通对应的授权URL地址的访问,以确保能在腾讯小微小程序中正常打开。