# 授权
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地址的访问,以确保能在腾讯小微小程序中正常打开。