成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

物聯(lián)網(wǎng)接口規(guī)范的方法是什么

這篇文章主要講解了“物聯(lián)網(wǎng)接口規(guī)范的方法是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“物聯(lián)網(wǎng)接口規(guī)范的方法是什么”吧!

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、永善網(wǎng)絡(luò)推廣、微信小程序開發(fā)、永善網(wǎng)絡(luò)營(yíng)銷、永善企業(yè)策劃、永善品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供永善建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:jinyejixie.com

一、開發(fā)流程

  1. 注冊(cè)開發(fā)者賬號(hào)。

  2. 云開發(fā)創(chuàng)建云應(yīng)用項(xiàng)目,獲取 client_id & secret。

說(shuō)明:開發(fā)者平臺(tái) key 的名稱為 accessId & accessKey。

  1. 創(chuàng)建 SDK:在涂鴉 IoT 平臺(tái),選擇 App工作臺(tái) > App SDK > 獲取SDK > 按要求填寫參數(shù) > 獲取schema(渠道標(biāo)識(shí))。

  2. 基于 OpenAPI 進(jìn)行業(yè)務(wù)開發(fā)。

  3. 測(cè)試無(wú)誤后,開發(fā)者自行發(fā)布。

二、授權(quán)流程

每個(gè)業(yè)務(wù) OpenAPI 都需要進(jìn)行 token 校驗(yàn)。

說(shuō)明:涂鴉 OpenAPI 遵循 OAuth 2.0 協(xié)議標(biāo)準(zhǔn)。

三、簡(jiǎn)單模式

針對(duì)云云對(duì)接場(chǎng)景,涂鴉提供了隱式授權(quán)的方式獲取:

物聯(lián)網(wǎng)接口規(guī)范的方法是什么

  1. 按照涂鴉云 OpenAPI 接口規(guī)范對(duì)開發(fā)者 client_id 和 secret 進(jìn)行簽名認(rèn)證。

  2. 涂鴉云校驗(yàn)并頒發(fā)令牌給第三方云。

說(shuō)明:隱式授權(quán)方式獲取的 token,權(quán)限維度為開發(fā)者維度,token 的操作權(quán)限范圍為該開發(fā)者有權(quán)限操作的范圍,例如操作(增、刪、改、查)開發(fā)者的應(yīng)用用戶數(shù)據(jù),產(chǎn)品下的設(shè)備數(shù)據(jù)和應(yīng)用下用戶綁定的設(shè)備數(shù)據(jù)。

四、接口規(guī)范

環(huán)境說(shuō)明

各接口使用方請(qǐng)根據(jù)自身所在區(qū)域調(diào)用相應(yīng)接口。

中國(guó)區(qū) https://openapi.tuyacn.com

美洲區(qū) https://openapi.tuyaus.com

歐洲區(qū) https://openapi.tuyaeu.com

印度區(qū) https://openapi.tuyain.com

請(qǐng)求方式

支持的請(qǐng)求方式如下:

  • GET

  • PUT

  • POST

  • DELETE

說(shuō)明:當(dāng)請(qǐng)求方式為POST時(shí),Content-Type 需使用application/json。

請(qǐng)求頭設(shè)置

任意接口都需要在 header 中加入如下參數(shù):

說(shuō)明:業(yè)務(wù)接口(非 token 接口)請(qǐng)求時(shí)需要參數(shù)access_token。

五、簽名規(guī)范

涂鴉云采用 HMAC-SHA256 創(chuàng)建摘要,根據(jù)不同應(yīng)用場(chǎng)景,當(dāng)前提供兩套簽名算法:

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

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

使用申請(qǐng)到的 client_id 與當(dāng)前請(qǐng)求的 13 位標(biāo)準(zhǔn)時(shí)間戳拼接成待簽名的字符串,采用申請(qǐng)到的云應(yīng)用 secret 作為密鑰參與哈希摘要,得到的字符串,最后轉(zhuǎn)大寫;

  • 業(yè)務(wù)接口

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

使用申請(qǐng)到的云應(yīng)用 client_id + 當(dāng)前有效的請(qǐng)求令牌 + 當(dāng)前請(qǐng)求的 13 位標(biāo)準(zhǔn)時(shí)間戳拼接成待簽名的字符串,采用申請(qǐng)到的云應(yīng)用 secret 作為密鑰參與哈希摘要,得到的字符串,最后轉(zhuǎn)大寫。

簽名示例

  • 準(zhǔn)備參數(shù):

client_id:1KAD46OrT9HafiKdsXeg

secret:4OHBOnWOqaEC1mWXOpVL3yV50s0qGSRC

t:1588925778000

access_token:3f4eda2bdec17232f67c0b188af3eec1

  • 令牌管理接口簽名:

待簽名字符串:1KAD46OrT9HafiKdsXeg1588925778000

簽名結(jié)果:HMAC-SHA256(1KAD46OrT9HafiKdsXeg1588925778000,4OHBOnWOqaEC1mWXOpVL3yV50s0qGSRC)

ceaafb5ccdc2f723a9fd3e91d3d2238ee0dd9a6d7c3c365deb50fc2af277aa83

轉(zhuǎn)大寫為:CEAAFB5CCDC2F723A9FD3E91D3D2238EE0DD9A6D7C3C365DEB50FC2AF277AA83

  • 業(yè)務(wù)接口:

待簽名字符串:1KAD46OrT9HafiKdsXeg3f4eda2bdec17232f67c0b188af3eec11588925778000

簽名結(jié)果:HMAC-SHA256(1KAD46OrT9HafiKdsXeg3f4eda2bdec17232f67c0b188af3eec11588925778000,4OHBOnWOqaEC1mWXOpVL3yV50s0qGSRC)

36c30e300f226b68add014dd1ef56a81edb7b7a817840485769b9d6c96d0faa1

轉(zhuǎn)大寫為:36C30E300F226B68ADD014DD1EF56A81EDB7B7A817840485769B9D6C96D0FAA1

  • 各類語(yǔ)言 HMAC SHA256 的實(shí)現(xiàn):

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();
                }
            }
  }
}

返回結(jié)果 統(tǒng)一返回 JSON,一般格式如下:

請(qǐng)求成功

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

請(qǐng)求異常

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

六、集成 SDKJava概述

目前提供的基于Java 的 Tuya Cloud SDK 封裝了 token 相關(guān)、用戶相關(guān)以及設(shè)備相關(guān)的接口,以便加速云云對(duì)接的開發(fā)。

開發(fā)者只需要關(guān)注所使用的業(yè)務(wù)功能方法的調(diào)用,構(gòu)建對(duì)應(yīng)的 TuyaClient 實(shí)例,實(shí)例會(huì)自動(dòng)更新 token 以及完成對(duì)應(yīng) API 的調(diào)用。SDK 主要包括了以下功能, 詳細(xì)接口信息請(qǐng)參考后文對(duì)應(yīng)模塊:

token 相關(guān)(無(wú)需用戶調(diào)用)

用戶相關(guān)(獲取用戶列表、注冊(cè)用戶、獲取用戶下的設(shè)備列表)

設(shè)備相關(guān)(獲取設(shè)備配網(wǎng) token、獲取配網(wǎng) token 下所有設(shè)備列表等接口)

集成 SDK

IDEA 導(dǎo)入 jar 包

Eclipse 導(dǎo)入 jar 包

通用模塊

由于部分新增接口無(wú)法及時(shí)同步集成至 SDK,開發(fā)者可通過(guò) SDK 通用接口進(jìn)行水平擴(kuò)展?jié)M足開發(fā)。

獲取 Header 列表:

/**
 * 獲取Header列表
 * @param isToken 是否是token相關(guān)請(qǐng)求,一般是false
 * @return
 */
public List<Header> getHeaders(Boolean isToken)

萬(wàn)能涂鴉接口:

/**
 * 萬(wàn)能涂鴉接口
 * @param url
 * @param method 請(qǐng)求類型(例如:GET)
 * @param headers 請(qǐng)求頭內(nèi)容(額外新增的header)
 * @param body
 * @return
 */
public String commonHttpRequest(String url, HttpMethod method, Map<String, String> headers, Object body)

調(diào)用示例

以下為注冊(cè)用戶的示例:

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);

感謝各位的閱讀,以上就是“物聯(lián)網(wǎng)接口規(guī)范的方法是什么”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)物聯(lián)網(wǎng)接口規(guī)范的方法是什么這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

標(biāo)題名稱:物聯(lián)網(wǎng)接口規(guī)范的方法是什么
本文地址:http://jinyejixie.com/article40/pgiceo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、網(wǎng)站內(nèi)鏈靜態(tài)網(wǎng)站、企業(yè)建站、云服務(wù)器、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
肇东市| 长葛市| 香格里拉县| 陆川县| 长泰县| 万源市| 来宾市| 琼结县| 昆明市| 仲巴县| 广州市| 兴业县| 徐汇区| 绥棱县| 徐汇区| 松桃| 汉源县| 翁源县| 驻马店市| 宁城县| 黔西县| 远安县| 若羌县| 丹江口市| 磐石市| 高台县| 万载县| 祥云县| 平阳县| 汕尾市| 普兰店市| 惠州市| 民勤县| 财经| 诸暨市| 鲁山县| 邵东县| 廉江市| 清丰县| 徐水县| 项城市|