虚拟账号授权模式

虚拟账号授权模式主要适用于开发者已存在自有账号体系,希望集成Aqara设备来丰富自有loT生态,但不想让用户感知到两套账号即Aqara账号和自有账号,则可在自有APP中集成Aqara设备配网SDK,将Aqara设备绑定到指定的虚拟账号中,实现双方设备的互联互通。

  • 虚拟账号:指通过Aqara开发者平台创建虚拟Aqara账号,实现与第三方账号体系的打通,用户可以通过开放的SDK或实施工具将设备绑定到该账号。

授权流程时序图如下所示。

virtual-auth

步骤1 通过开发者创建的标识账号创建Aqara虚拟账号,获取虚拟用户唯一标识openid

  • 接口intent:config.auth.createAccount
  • 接口描述:通过提供的开发者标识账号accountId创建一个虚拟的Aqara账号,实现与第三方账号体系的打通。虚拟账号不可用于Aqara Home App,需要搭配设备配网SDK使用。
  • 请求参数:
名称 类型 是否必须 描述
accountId String 开放者创建的标识账号id,保障该AppId下唯一
remark String 备注
needAccessToken Boolean 是否需要返回accessToken,true: 需要; false:不需要
accessTokenValidity String 访问令牌有效时长,单位天,默认7d。支持1~24h(小时),1~30d(天),1~10y(年) ,refreshToken时长默认为accessToken有期限+30天
  • 请求示例:
{
    "intent": "config.auth.createAccount",
    "data": {
        "accountId": "18900001234",
        "remark": "lumi-1"
    }
}
  • 响应参数:
名称 类型 描述
openId String 用户标识唯一id
expiresIn String accessToken过期时间,单位秒,当needAccessToken为true时返回
accessToken String 访问令牌,当needAccessToken为true时返回
refreshToken String 访问刷新令牌,refreshToken时长默认为accessToken有期限+30天,当needAccessToken为true时返回
  • 响应示例:
{
    "code": 0,
    "requestId": "",
    "message": "Success",
    "msgDetails": null,
    "result": {
        "openId": "xxx"
    }
}

步骤2 通过开发者创建的虚拟标识账号获取授权验证码authCode

  • 接口intent:config.auth.getAuthCode
  • 接口描述:本接口用于获取授权验证码Code,验证码有效期10分钟。
  • 请求参数:
名称 类型 是否必须 描述
account String 用户虚拟标识账号,步骤1的accountId
accountType int 账号类型,2-虚拟账号
accessTokenValidity String 访问令牌有效时长,单位天,默认7d。支持1~24h(小时),1~30d(天),1~10y(年) ,refreshToken时长默认为accessToken有期限+30天
  • 请求示例:
{
    "intent": "config.auth.getAuthCode",
    "data": {
        "account": "189000123456",
        "accountType": 2,
        "accessTokenValidity": "1h"
    }
}
  • 返回参数
名称 类型 描述
authCode String 当请求参数accountType为2时返回,authCode有效期10分钟。
  • 响应示例:
{
    "code": 0,
    "requestId": "",
    "message": "Success",
    "msgDetails": null,
    "result": {
        "authCode": "xxxx"
    }
}

步骤3 通过授权验证码authCode获取访问令牌accessToken

  • 接口intent:config.auth.getToken
  • 接口描述:在授权码Code过期前,通过此接口将授权码换取访问令牌accessToken,访问令牌的默认有效期为7天,可以通过步骤2自定义有效期时长。
  • 请求参数:
名称 类型 是否必须 描述
authCode String 上一步请求获取的authCode
account String 用户虚拟标识账号,步骤1的accountId
accountType Integer 账号类型,2-虚拟账号
  • 请求示例:
{
    "intent": "config.auth.getToken",
    "data": {
        "authCode": "xxxx",
        "account": "xxx",
        "accountType": 2
    }
}
  • 响应参数:
名称 类型 描述
expiresIn String accessToken过期时间,单位秒
openId String 用户唯一id
accessToken String 访问令牌
refreshToken String 访问刷新令牌,refreshToken时长默认为accessToken有期限+30天
  • 响应示例:
{
    "code": 0,
    "requestId": "",
    "message": "Success",
    "msgDetails": null,
    "result": {
        "expiresIn": "86400",
        "openId": "593652793976837702248177061889",
        "accessToken": "b8001e1893f5e4316a4f8c3b47df3720",
        "refreshToken": "ddd9dc7e9ec7b772e852121ed2fe75aa"
    }
}

步骤4 通过refreshToken刷新访问令牌,获取新的accessToken和refreshToken

  • 接口intent:config.auth.refreshToken
  • 接口描述:在accessToken过期前,通过此接口用refreshToken刷新访问令牌accessToken,refreshToken时长默认为accessToken有期限+30天。
  • 请求参数:
名称 类型 是否必须 描述
refreshToken String 访问刷新令牌
  • 请求示例:
{
    "intent": "config.auth.refreshToken",
    "data": {
        "refreshToken": "xxxx"
    }
}
  • 响应参数:
名称 类型 描述
expiresIn String accessToken过期时间,单位秒
openId String 用户唯一id
accessToken String 新的访问令牌
refreshToken String 新的访问刷新令牌
  • 响应示例:
{
    "code": 0,
    "requestId": "",
    "message": "Success",
    "msgDetails": null,
    "result": {
        "expiresIn": "86400",
        "openId": "593652793976837702248177061889",
        "accessToken": "b8001e1893f5e4316a4f8c3b47df3720",
        "refreshToken": "ddd9dc7e9ec7b772e852121ed2fe75aa"
    }
}
Copyright © 2023 深圳绿米联创科技有限公司 all right reserved,powered by Gitbook文档修改时间: 2024-02-21 09:55:50

results matching ""

    No results matching ""