1. 二维码授权登录

[!note]

以下流程中的 APP中控设备 的账号体系需要打通才能使用,否则会报错

比如:如果你使用 "涂鸦智能" app 来扫描后台创建的 SDK 的二维码那么会报错,session 失效。

如果不知道如何解决需要联系公司对应的项目经理。

1.1. 流程说明

二维码授权登录功能适用于 APP 扫码授权另一台设备登录相同账号。设备可以是中控设备、TV 、Pad 等。完整授权流程如下:

sequenceDiagram participant APP participant 中控设备 participant Serve 中控设备->>Serve: 获取 token ① Serve-->>中控设备: 返回 token 中控设备->>中控设备: 生成二维码 ② loop 等待授权成功 中控设备->>Serve: 获取登录状态 ③ Serve-->>中控设备: 返回登录状态 end APP->>中控设备: 扫描二维码:获取 token ④ 中控设备-->>APP: 获取 token APP->>Serve: 授权: 使用 token ⑤ Serve-->>APP: 授权成功/失败 alt 获取登录状态成功 中控设备->>中控设备: 进入主页 else end

图中标注的关键步骤解释:

1.1.1. ①、获取 token

设备请求接口获取授权流程使用的 token,接口为getQRCodeToken

1.1.2. ②、生成二维码

将获取到的 token,使用特定格式生成二维码:

格式为:tuyaSmart--qrLogin?token=xxxxxxx

例如:

tuyaSmart--qrLogin?token=AZc72de000-ec00-4000-9e51-b610fc300000

生成二维码后

二维码图片_6月28日11时52分25秒

将上面字符串生成二维码展示在设备的屏幕中;

1.1.3. ③、获取登录状态

向服务端轮训获取是否授权成功,如果授权成功后将返回用户信息,跳转进入应用主页,进入后续操作。

接口为: QRCodeLogin

1.1.4. ④、扫描二维码

app 扫描设备上的二维码,将二维码中 token 解析出来,进行授权操作

1.1.5. ⑤、授权

将解析出的二维码发送到云端,完成授权动作。

授权接口为QRcodeAuth

1.2. 接口说明

1.2.1. 获取 token 接口

用户获取 token

接口说明

void getQRCodeToken(String countryCode, IGetQRCodeTokenCallback callback);

参数说明

参数 说明
countryCode 国家区号,例如:86
callback 回调

示例代码

TuyaHomeSdk.getUserInstance().getQRCodeToken("86", new IGetQRCodeTokenCallback() {
    @Override
    public void onSuccess(String token) {

    }

    @Override
    public void onError(String code, String error) {

    }
});

1.2.2. 获取登录状态接口

接口说明

void QRCodeLogin(String countryCode, String token, ILoginCallback callback);

参数说明

参数 说明
countryCode 国家区号,例如:86
token token
callback 回调

示例代码

TuyaHomeSdk.getUserInstance().QRCodeLogin("86", "xxxx", new ILoginCallback() {
    @Override
    public void onSuccess(User user) {
        if (user != null && !TextUtils.isEmpty(user.getSid())){
            gotoHomePage();
        }
    }

    @Override
    public void onError(String code, String error) {

    }
});

1.2.3. 授权接口

接口说明

void QRcodeAuth(String countryCode, long homeId, String token, IBooleanCallback callback);

参数说明

参数 说明
countryCode 国家区号,例如:86
homeId 家庭 id。请参考家庭相关章节获取
token token
callback 回调

示例代码

TuyaHomeSdk.getUserInstance().QRcodeAuth("86", mHomeId, getActivityToken(), new IBooleanCallback() {
    @Override
    public void onSuccess() {

    }

    @Override
    public void onError(String code, String error) {

    }
});

results matching ""

    No results matching ""