@tuya/tuya-connector-nodejs
Version:
tuya openapi nodejs sdk
125 lines (93 loc) • 3.61 kB
Markdown
[](README.md) | [中文版](README_CN.md)
[](https://developer.tuya.com/en/docs/iot/api-reference?id=Ka7qb7vhber64)
Tuya provides a set of HTTP APIs and signature verification logic. You need to implement the logic during when you integrate the APIs.
`tuya-connector` provides capabilities to sign a request, refresh, store, and renew a token, and encapsulate common APIs. You can quickly connect to Tuya open platform.
```bash
npm install @tuya/tuya-connector-nodejs
yarn add @tuya/tuya-connector-nodejs
```
```ts
import { TuyaContext } from '@tuya/tuya-connector-nodejs';
const tuya = new TuyaContext({
baseUrl: 'https://openapi.tuyacn.com',
accessKey: 'xx',
secretKey: 'xx',
});
const device = await tuya.device.detail({
device_id: 'device_id'
});
```
By default, `tokenStore` is implemented based on memory. We recommend that you implement the store instance in your service. In the following code block, the Redis Store is used as an example.
```ts
// tokenStore.ts
import { TuyaTokenStorInterface, TuyaTokensSave } from '@tuya/tuya-connector-nodejs';
import IORedis from 'ioredis';
export class RedisTokenStore implements TuyaTokenStorInterface {
private readonly client: IORedis.Redis;
private readonly key: string;
constructor(client: IORedis.Redis, key: string = 'tuya::token') {
this.client = client;
this.key = key;
}
async setTokens(tokens: TuyaTokensSave): Promise<boolean> {
const res = await this.client.set(this.key, JSON.stringify(tokens));
return ! ! res;
}
async getAccessToken(): Promise<string | undefined> {
const jsonStr = await this.client.get(this.key) || '{}';
const tokens: TuyaTokensSave = JSON.parse(jsonStr);
return tokens && tokens.access_token;
}
async getRefreshToken(): Promise<string | undefined> {
const jsonStr = await this.client.get(this.key) || '{}';
const tokens: TuyaTokensSave = JSON.parse(jsonStr);
return tokens.refresh_token;
}
}
// index.ts
import { RedisTokenStore } from './tokenStore';
import IoRedis from 'ioredis';
const redis = new IoRedis();
const tuya = new TuyaContext({
baseUrl: 'https://openapi.tuyacn.com',
accessKey: 'xx',
secretKey: 'xx',
store: new RedisTokenStore(redis),
});
```
`tuya-connector` uses Axios as `httpClient` by default, and exposes replaceable parameters. If necessary, you can also customize `httpClient`.
```ts
import axios from 'axios';
import { TuyaContext } from '@tuya/tuya-connector-nodejs';
const tuya = new TuyaContext({
baseUrl: 'https://openapi.tuyacn.com',
accessKey: 'xx',
secretKey: 'xx',
rpc: axios
});
```
`tuya-connector` encapsulates common APIs, and declares the types of reqeust and response parameters. You can customize additional API requests.
```ts
import { TuyaContext } from '@tuya/tuya-connector-nodejs';
const tuya = new TuyaContext({
baseUrl: 'https://openapi.tuyacn.com',
accessKey: 'xx',
secretKey: 'xx',
});
const { data } = await tuya.request({
method: 'GET',
path: '/v1.0/xx',
body: {},
});
```
1. Apply for authorization key. On the [Cloud Development Platform](https://iot.tuya.com/cloud/), you can create a project to get the access ID and access secret of the cloud application.
2. Global error codes. For more information, see [Global Error Codes](https://developer.tuya.com/en/docs/iot/error-code?id=K989ruxx88swc).