温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

物联网接口规范的方法是什么

发布时间:2022-01-11 16:24:49 来源:亿速云 阅读:179 作者:iii 栏目:互联网科技

这篇文章主要讲解了“物联网接口规范的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“物联网接口规范的方法是什么”吧!

一、开发流程

  1. 注册开发者账号。

  2. 云开发创建云应用项目,获取 client_id & secret。

说明:开发者平台 key 的名称为 accessId & accessKey。

  1. 创建 SDK:在涂鸦 IoT 平台,选择 App工作台 > App SDK > 获取SDK > 按要求填写参数 > 获取schema(渠道标识)

  2. 基于 OpenAPI 进行业务开发。

  3. 测试无误后,开发者自行发布。

二、授权流程

每个业务 OpenAPI 都需要进行 token 校验。

说明:涂鸦 OpenAPI 遵循 OAuth 2.0 协议标准。

三、简单模式

针对云云对接场景,涂鸦提供了隐式授权的方式获取:

物联网接口规范的方法是什么

  1. 按照涂鸦云 OpenAPI 接口规范对开发者 client_id 和 secret 进行签名认证。

  2. 涂鸦云校验并颁发令牌给第三方云。

说明:隐式授权方式获取的 token,权限维度为开发者维度,token 的操作权限范围为该开发者有权限操作的范围,例如操作(增、删、改、查)开发者的应用用户数据,产品下的设备数据和应用下用户绑定的设备数据。

四、接口规范

环境说明

各接口使用方请根据自身所在区域调用相应接口。

中国区 https://openapi.tuyacn.com

美洲区 https://openapi.tuyaus.com

欧洲区 https://openapi.tuyaeu.com

印度区 https://openapi.tuyain.com

请求方式

支持的请求方式如下:

  • GET

  • PUT

  • POST

  • DELETE

说明:当请求方式为POST时,Content-Type 需使用application/json

请求头设置

任意接口都需要在 header 中加入如下参数:

说明:业务接口(非 token 接口)请求时需要参数access_token

五、签名规范

涂鸦云采用 HMAC-SHA256 创建摘要,根据不同应用场景,当前提供两套签名算法:

  • 令牌管理接口(获取令牌、刷新令牌)

sign = HMAC-SHA256(client_id + t, secret).toUpperCase()

使用申请到的 client_id 与当前请求的 13 位标准时间戳拼接成待签名的字符串,采用申请到的云应用 secret 作为密钥参与哈希摘要,得到的字符串,最后转大写;

  • 业务接口

sign = HMAC-SHA256(client_id + access_token + t, secret).toUpperCase()

使用申请到的云应用 client_id + 当前有效的请求令牌 + 当前请求的 13 位标准时间戳拼接成待签名的字符串,采用申请到的云应用 secret 作为密钥参与哈希摘要,得到的字符串,最后转大写。

签名示例

  • 准备参数:

client_id:1KAD46OrT9HafiKdsXeg

secret:4OHBOnWOqaEC1mWXOpVL3yV50s0qGSRC

t:1588925778000

access_token:3f4eda2bdec17232f67c0b188af3eec1

  • 令牌管理接口签名:

待签名字符串:1KAD46OrT9HafiKdsXeg1588925778000

签名结果:HMAC-SHA256(1KAD46OrT9HafiKdsXeg1588925778000,4OHBOnWOqaEC1mWXOpVL3yV50s0qGSRC)

ceaafb5ccdc2f723a9fd3e91d3d2238ee0dd9a6d7c3c365deb50fc2af277aa83

转大写为:CEAAFB5CCDC2F723A9FD3E91D3D2238EE0DD9A6D7C3C365DEB50FC2AF277AA83

  • 业务接口:

待签名字符串:1KAD46OrT9HafiKdsXeg3f4eda2bdec17232f67c0b188af3eec11588925778000

签名结果:HMAC-SHA256(1KAD46OrT9HafiKdsXeg3f4eda2bdec17232f67c0b188af3eec11588925778000,4OHBOnWOqaEC1mWXOpVL3yV50s0qGSRC)

36c30e300f226b68add014dd1ef56a81edb7b7a817840485769b9d6c96d0faa1

转大写为:36C30E300F226B68ADD014DD1EF56A81EDB7B7A817840485769B9D6C96D0FAA1

  • 各类语言 HMAC SHA256 的实现:

Javascript HMAC SHA256 

/**
Run the code online with this jsfiddle. Dependent upon an open source js library calledhttp://code.google.com/p/crypto-js/.
**/

<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/hmac-sha256.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/components/enc-base64-min.js"></script>

<script>
  var hash = CryptoJS.HmacSHA256("Message", "secret");
  var hashInBase64 = hash.toString().toUpperCase();
  document.write(hashInBase64);
</script>

PHP HMAC SHA256

/**
PHP has built in methods for hash_hmac (PHP 5) and base64_encode (PHP 4, PHP 5) resulting in no outside dependencies. Say what you want about PHP but they have the cleanest code for this example.
**/

$s = hash_hmac('sha256', 'Message', 'secret', true);
echo strtoupper(var_dump($s));

Java HMAC SHA256

/**
Dependent on Apache Commons Codec to encode in base64.
**/

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;

public class ApiSecurityExample {
  public static void main(String[] args) {
    try {
     String secret = "secret";
     String message = "Message";

     Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
     SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
     sha256_HMAC.init(secret_key);

      byte[] bytes = sha256_HMAC.doFinal(message.getBytes());
     String hash = new HexBinaryAdapter().marshal(bytes).toUpperCase();
     System.out.println(hash);
    }
    catch (Exception e){
     System.out.println("Error");
    }
   }
}

 C# HMAC SHA256

using System;
using System.Security.Cryptography;

namespace Test
{
  public class MyHmac
  {
    public static string Encrypt(string message, string secret)
            {
                secret = secret ?? "";
                var encoding = new System.Text.UTF8Encoding();
                byte[] keyByte = encoding.GetBytes(secret);
                byte[] messageBytes = encoding.GetBytes(message);
                using (var hmacsha256 = new HMACSHA256(keyByte))
                {
                    byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
                    StringBuilder builder = new StringBuilder();
                    for (int i = 0; i < hashmessage.Length; i++)
                    {
                        builder.Append(hashmessage[i].ToString("x2"));
                    }
                    return builder.ToString().ToUpper();
                }
            }
  }
}

返回结果 统一返回 JSON,一般格式如下:

请求成功

{
    "success": true,
    "result": {
        //object
    }
}

请求异常

{
    "success": false,
    "code": 1010,
    "msg": "token非法"
}

六、集成 SDK Java 概述

目前提供的基于Java 的 Tuya Cloud SDK 封装了 token 相关、用户相关以及设备相关的接口,以便加速云云对接的开发。

开发者只需要关注所使用的业务功能方法的调用,构建对应的 TuyaClient 实例,实例会自动更新 token 以及完成对应 API 的调用。SDK 主要包括了以下功能, 详细接口信息请参考后文对应模块:

token 相关(无需用户调用)

用户相关(获取用户列表、注册用户、获取用户下的设备列表)

设备相关(获取设备配网 token、获取配网 token 下所有设备列表等接口)

集成 SDK

IDEA 导入 jar 包

Eclipse 导入 jar 包

通用模块

由于部分新增接口无法及时同步集成至 SDK,开发者可通过 SDK 通用接口进行水平扩展满足开发。

获取 Header 列表:

/**
 * 获取Header列表
 * @param isToken 是否是token相关请求,一般是false
 * @return
 */
public List<Header> getHeaders(Boolean isToken)

万能涂鸦接口:

/**
 * 万能涂鸦接口
 * @param url
 * @param method 请求类型(例如:GET)
 * @param headers 请求头内容(额外新增的header)
 * @param body
 * @return
 */
public String commonHttpRequest(String url, HttpMethod method, Map<String, String> headers, Object body)

调用示例

以下为注册用户的示例:

TuyaClient client = new TuyaClient(clientId, secret, RegionEnum.CN);
String uid = client.registerUser("testApp","86","18212345678", MD5Util.getMD5("123456")"nickName",UserTypeEnum.MOBLIE);
System.out.println("成功同步用户: "+ uid);

感谢各位的阅读,以上就是“物联网接口规范的方法是什么”的内容了,经过本文的学习后,相信大家对物联网接口规范的方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI