# tuya_cloud_sdk_nodejs

> 涂鸦云 API NODEJS SDK

Latest version **1.0.1** (published 2020-11-04) · 0 weekly downloads

## Install

```sh
npm install tuya_cloud_sdk_nodejs
pnpm add tuya_cloud_sdk_nodejs
yarn add tuya_cloud_sdk_nodejs
bun add tuya_cloud_sdk_nodejs
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.1 |
| Published | 2020-11-04 |
| First published | 2020-11-02 |
| Weekly downloads | 0 |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=7.10.0 |
| Dependencies | 1 |
| Unpacked size | 124.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | tuyacloudapi |
| Maintainers | go2smartphone |
| Keywords | tuyacloudapi, tuyacloud, sdk, nodejs |

## Links

- npm: https://www.npmjs.com/package/tuya_cloud_sdk_nodejs
- Repository: https://registry.code.tuya-inc.top/shengjun.zhang/tuya_cloud_sdk_nodejs
- npm.io page: https://npm.io/package/tuya_cloud_sdk_nodejs

## Dependencies (1)

- [async-await-retry](https://npm.io/package/async-await-retry.md) ^1.0.4

## Recent versions

- 1.0.1 (latest) — 2020-11-04
- 1.0.0 — 2020-11-02

## README

# 涂鸦云云对接API SDK Nodejs版本

## 使用前需要做
1. 确认nodejs版本在7.10.1及以上

2. 在涂鸦云平台注册开发者账号，确定`AccessID、AccessKey、Endpoint`(调用地址)这些值

## 源码安装
1. 解压源码包到您项目合适的位置。
2. 代码中引用对应模块代码，可参考示例。

## Example

在你运行本sdk前，显式初始化一次开发者信息：
```
   Config.init(accessID, accessKey, Region.URL_CN);
```

以获取设备信息接口为例，直接调用device.GetDevice()即可:   
```nodejs
    
    let deviceId = 'xxxx';
    let callback = function(err, data) {
        if (err) {
            console.log(err);
            return;
        }
    
        console.log(data);
    };
    
    // 获取设备信息
    DeviceClient.getDevice(deviceId, callback);
    
```

## 目前支持的API

|  模块                   | 请求类 |
|  ----                     |  ----  |
| token相关 | TokenClient |
| 用户管理 | UserClient | 
| 设备管理 | DeviceClient |
| 设备控制 | DeviceControlClient |
| 设备群组 | DeviceGroupClient |
| 设备成员管理| DeviceMemberClient |
| 数据统计 | DataClient | 
| 家庭管理 | HomeClient | 
| 自动化 | AutomationClient | 
| 场景 | SceneClient | 
| 配网管理 | PairTokenClient | 
| 定时管理 | TimeClient | 
| 天气管理 | WeatherClient |

## 常见问题

### 关于refreshToken接口

注意： refreshToken接口会返回一个新的access_token，即使旧的token还未过期。

这个逻辑在GetToken方法中已经做了，用户一般不需要调用refresh接口。

### 每次调用api之前，是否需要获取token或者刷新token？

不需要，这层逻辑已经在api方法中实现了。token信息会缓存到内存中。

### 调用某个接口时，如果token已经过期，需要手动调用refresh-token接口？

不需要，在GetToken()方法实现中，会检查token是否过期。如果过期会去重新拉取。

### 如果你的token会在多个节点中去刷新，那么你需要自己实现common.TokenLocalManage interface
涂鸦的云token，只保证面向的用户级别刷新不会有问题，但是一个用户的token在多个节点并发刷新，就会导致一个节点是成功的，
其他都是失败；
因为 `获取token`接口会返回一个access_token、refresh_token，但是 `刷新token`接口 会把当前的refresh_token 刷掉，会产生一个新的，旧的失效；

### api方法的异常信息和error需要如何处理？

接口如果返回error，一般可以为url错误或者json解析出错，可联系涂鸦相关人员帮忙修改

如果error为空，但是response的success字段为false，开发者可以根据Msg字段的详细错误信息进行排查

### 获取设备列表接口，如果多个deviceID，需要怎么拼接？

多个deviceID，以英文逗号分割拼接

### 获取用户列表接口中，schema指的是什么？

创建APP-SDK后，详情页面的渠道标识符就是schema

### v1.0/devices/tokens/{{pair_token}}接口，pair_token是指什么？如何获取？

pair_token是指app下的某个用户的配网token，可以从v1.0/devices/token获取。

### 如果SDK中的API没有及时更新，如何自己实现一个API？

有三种方法：

一、自定义类实现
1. 如果请求不需要传递body参数，通过创建请求类继承com.tuya.api.common.ApiRequest, 并完善其中getRequestMethod和getRequestUrl两个方法即可，
如果接口需要传递body参数，应继承com.tuya.api.common.ApiRequestBody, 完善getRequestMethod、getRequestUrl和getRequestBody方法；

2. 通过client类暴露请求方法。

> 具体可以参考example.user/example.device目录下相关示例;

二、使用提供的通用接口
直接调用CommonClient, 传入相应的参数即可。

> 具体可以参考example.common目录下相关示例;

三、提个issue，我们会及时更新 ^_^

---
_Source: https://npm.io/package/tuya_cloud_sdk_nodejs · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
