天猫精灵智能家居对接,及天猫iot官网配置图文讲解(一)

天猫智能家居对接

1-1、介绍

这篇文章主要是介绍,如何使用java对接天猫精灵智能家居提供的api。这么做的好处就是能让用户通过天猫精灵发送命令到我们的服务器,然后操控设备执行一系列的命令,当然这些功能呢都是天猫精灵官方制定的协议,我们只是对接而已。下面开始教程。

2022年1月5日

1-2、天猫精灵智能家居的应用

​ 天猫精灵嘛!阿里精灵开放平台,iot开发者平台,阿里生活物联网平台,还有iot开放平台。这些乱七八糟的名字都是直接或间接描述天猫精灵智能家居的。下面的文字或者图片中如果出现这些名字,你们就统一当成是天猫精灵设备对接的那个平台就行了。

在这里插入图片描述

​ 官方提供了一个供给开发者对接设备的一个接口。用户可以通过天猫精灵app里下载开发者创建的技能,绑定用户在开发者平台拥有的设备。让用户可以使用自己的天猫精灵访问我们的设备。

​ 但是在此之前,我觉得有必要让开发者首先知道,这个应用是怎么使用的。首先假设我们的技能发布上线了,那么我们需要做的是找到我们的技能,并且注册,且能够执行:

  1. 打开天猫精灵app,进入首页面,也就是精灵家这里,然后点击技能广场,如果找不到,可以去”查看更多“按钮里面去寻找。进入技能广场,点击搜索按钮进入搜索界面查找我们发布的技能

在这里插入图片描述

  1. 进入搜索界面,输入技能名称并搜索。就可以搜索我们发布的技能了

在这里插入图片描述

  1. 进入技能的信息界面,点解账户绑定,就可以进入我们的项目的范围内,可以跳转到前端,让用户输入账号和密码,将天猫精灵设备与我们的账号绑定。到时候就可以让天猫精灵访问我们的项目了

在这里插入图片描述

1-3、天猫精灵的技术开发准备

天猫开发前配置

​ 和天猫精灵对接的流程我打算使用一个demo演示,但是这个demo不会太复杂,基本是只是使用到springboot,maven。至于官方提到的OAuth2.0。嗯,实际的项目中出于安全考虑,建议用上。但是这里只是一个demo,所以不考虑,只让读者了解大致的脉络就好。

​ 首先需要准备的是带https的域名或者是公网ip(这个ssl可以自己生成,然后挂上去,效果是一样的)或者购买内网穿透工具(花生壳,natapp),让天猫精灵的服务器能工访问到我们的服务器就可以了。

​ 开发前首先要添加一些配置到阿里官方,打开阿里精灵开放平台,这里一般都会要求进行登录,也有可能要你进行开发者信息的配置。这里不讲跳过。登录过后就会进入技能开发界面,如图

在这里插入图片描述

​ 确认网址是否一致,是否进入技能开发页面,如果成功了,就点击添加技能,这里的话,就很简单输入技能名称,点击下一步就好。

在这里插入图片描述

​ 之后就会进入如图所示界面,在网关url中输入之后的业务url。这里建议使用https协议的ip或域名(这里可以不使用https协议),点击保存。滑动滚轮到下面。

在这里插入图片描述

​ 这里可以看见有五个输入框,前面两个输入框,是给token令牌登录检测使用的,用于区分不同用户访问服务器而使用的。只不过这里的token指的是天猫精灵服务器向我们访问,而不是天猫精灵的使用者向我们访问。

  • **Authorization URL:**这里我打算让他跳转到html页面去让用户自己输入登录信息,进行验证。
  • Access Token URL:这里是用户更新token信息使用的路径,也是用户绑定账户时需要用到的
  • **Logout URL:**当用户不想使用我们的技能时,就需要到在技能广场中取消掉技能,而取消技能就会调用这个注销功能
    在这里插入图片描述
    在这里插入图片描述

​ 确认信息没有错误之后,就可以点击保存了。(之后可以回到这个页面随意修改),项目还没部署,暂时用不上那个“点击测试“按钮。

流程

  1. 首先是用户发起请求,要求将天猫精灵账号和开发者账号绑定
  2. 天猫将跳转到实现准备好的Authorization URL路径并发送数据
  3. 开发者保留这些数据,并重定向到前端页面
  4. 用户填写开发者提供的账号和密码,点击提交
  5. 开发者验证信息无误,生成code字符串,向之前保留的数据中提取出返回路径,将信息发送给天猫。
  6. 天猫拿到code,发起新的Access Token URL请求,依照code拿到开发者生成的token令牌,之后这个天猫app账户就和开发者网站的账号绑定了。

1-4、项目创建

创建springboot部分的代码

​ 创建一个springboot项目,导入maven依赖,maven主要依赖如下。这里主要是作为天猫精灵对接演示所需要使用到的依赖,简单的web就够了。

<dependencys><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.74</version></dependency>
</dependencys>
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

​ 创建完成之后,这里是我的项目结构(完成品),可以参考一下。默认创建完成之后,resources里的应该是application.properties而不是application.yml,我比较习惯用yml,就改了。

在这里插入图片描述

​ 项目创建完成后,在resources中的static里创建login.html文件,这个文件就负责登录功能就可以了,可以简单的美化一下。

在这里的form表单中,action路径不能出现域名或者ip,否则提交时session会出现不一致的情况。则会导致session架构的项目无法接收数据。

<!---->
<form action="/tianmao/home/login" method="post"><table style="border: 1px solid;border-radius: 10px;margin-top: 100px"><tr style="height: 50px"><td style="font-size: 20px">用户名</td><td><input style="height: 25px;width: 220px" type="text" name="username"/></td></tr><tr><td style="font-size: 20px">密码</td><td><input style="height: 25px;width: 220px" type="password" name="password"/></td></tr><tr><td colspan="2"><input style="padding: 10px 18px;float: right;margin-right: 45px" type="submit" value="登录"></td></tr></table></form>

​ 回到java代码部分,创建一个controller包,里面创建一个带Controller的注解的类。里面代码大致如下:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;@Controller
@RequestMapping("/tianmao/home")
public class TianMaoLoginController {
}

​ 创建一个Authorization里配置相同的RequestMapping注解,我这里是类上面也创建了一个路径注解。所以在方法这里,就剩掉前缀了。不影响代码运行。这里的validation方法,只是简单的参数检测,并把参数取出来。

    /*** @return 跳转到天猫精灵的登录页面*/@RequestMapping("/toLogin")public String toLogin(HttpServletRequest request) {System.out.println("TianMaoSkilLogin.toLogin");//获取数据,验证数据信息Map<String, Object> data = validation(request, null);//将数据保存到session中,方便下一次调用使用request.getSession().setAttribute("oauth2", data);//进入到天猫精灵的登录页面的时候,使用的就是之前的Session,提交也是,所以可以煲出你这些数据到提交之后使用return "/login.html";//如果想跳过验证,可以将将return语句替换为下面的语句,可以直接跳过登录验证界面
//        return "redirect:" + data.get("redirect_uri") + "&code=" + 123456 + "&state=" + data.get("state");}@RequestMapping("/login")public String login(HttpServletRequest request) throws Exception {//for循环Map<String, String[]> map = request.getParameterMap();for (String s : map.keySet()) {//这里是数组,建议采用Arrays的toString方法输出字符串数组System.out.println("key = " + s + "  |  value = " + Arrays.toString(map.get(s)));}return null;}

创建新产品,测试java代码跳转

​ 这一步测试需要在阿里平台创建一个产品,回到产品开发界面,点击添加新产品。

在这里插入图片描述

​ 如图,选择电子/电工类别选择插座,然后点击下一步

在这里插入图片描述

​ 点击下一步后,官方会让你填写一些参数,这些参数内容如下图,之后就慢慢的介绍了

在这里插入图片描述

​ **品牌:**首先是这个品牌,别被下面的这一行小提示吓到了,以为需要有品牌才能注册,实际上嘛,你随便选一个都可以。我这里选择我们公司的一个商标进行注册。

在这里插入图片描述

​ **产品名称:**这里填写中文英文都可以,不作要求

​ **产品型号:**这里应该是要做唯一标识使用。但是重复也是可以的

​ **接入方式:**你没的选

​ **所属技能:**选择你在之前步骤所创建的技能就可以了

在这里插入图片描述

​ **通讯协议:**选择wifi

​ **数据格式:**选择标准,透传需要改写js文件。想了解的可以去查看文档

在这里插入图片描述

​ 之后点击提交,就成功创建一个产品,接下来就是配置插座的功能,这里选择在线状态开关功能,简单测试提交就好。

在这里插入图片描述

​ 如图所示,点击设备调试,跳转到调试界面,到调试界面时,还会看见官方向我们的服务器发送了一条请求,这里是在查询你的设备数据(我这里是会这样)。

在这里插入图片描述

在这里插入图片描述

​ 进入调试界面后会弹出以下界面,可以直接在当前窗口内调试,也可点击新窗口打开打开新窗口打开,效果都是一样的。

在这里插入图片描述

请添加图片描述
在这里插入图片描述

在这里插入图片描述

​ 这里可以看到我们都把数据拿到手了,在第二次请求时。可以做做具体的业务,验证用户提交的数据信息。

在这里插入图片描述

当然,你还会在天猫调试网页上看到你的项目的报错信息,这是正常的,因为我没有合理的返回数据信息,返回的是一个空值。

在这里插入图片描述

​ 下面就要在代码中验证前端提交的账号和密码,这里就涉及到具体的数据库层面。但是也可以简单的测试一下,随便的验证一下前端信息,生成一个code,之后官方会用这个code刚跟我们交换代码。需要临时存储一下这个code数据。这里面的data是HashMap类,里面是之前保存在session中的代码数据。取出来就可以了

return "redirect:" + data.get("redirect_uri") + "&code=" + code + "&state=" + data.get("state");

​ 当你的返回信息正确无误,官方就会发起下一次请求,这个请求和之前请求的sessionId是不一致的(这是因为token令牌)。,访问的路径也是之前步骤中的Access Token URL配置的路径。还是先看看有哪些访问信息。

​ 这里能看到,授权类型,客户端id,客户端秘钥,以及之前提到的code还有最后的跳转连接。
在这里插入图片描述

​ 在这之后就要根据code信息,生成token就行了,当然拿到code后生成,也是一样的。返回格式采用的是json格式。如此就算是绑定成功了。

@RequestMapping("/token")
@ResponseBody
public Map<String, Object> token(HttpServletRequest request) throws Exception {Map<String, Object> data = validation(request, null);System.out.println(data);Map<String, Object> map = new HashMap<>();String code = (String) data.get("code");System.out.println(bind);UserService.User user = (UserService.User) bind.get(code);//自己定义的token,真实环境还是需要进行加密String token = user.getUsername() + "_" + user.getPassword() + '_' + System.currentTimeMillis();map.put("access_token", token);map.put("refresh_token", token);map.put("expires_in", 17600000L);//返回结果return map;
}

如果想要源代码请联系博主

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/49382.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java对接天猫精灵语音助手实现对公司其下的智能设备进行控制(附上源码)

java对接天猫精灵语音助手实现对公司其下的智能设备进行控制 前言当初刚来广州 公司上一任java已经离职半年 &#xff0c;项目已经跑不动了&#xff0c;才招人的&#xff0c;所以我获得的是一个连跑都跑不起来的项目源码并且对项目一无所知&#xff0c;一年前网上并没有对接天…

天猫精灵智能设备对接(7) OAuth2.0

在开始之前先放两篇参考&#xff0c;一篇英文http://bshaffer.github.io/oauth2-server-php-docs/cookbook/&#xff0c;一篇中文https://www.cnblogs.com/endv/p/7868549.html&#xff0c;中文博客里的内容基本上是把英文官方文档翻译一遍。到这里如果你不知道OAuth2.0是啥可以…

天猫精灵对接2(OAuth 搭建)

根据 接入方式及流程 中的说明&#xff0c;可知&#xff0c;搭建过程中&#xff0c;我们需要自己整一个 OAuth 的授权平台&#xff0c;具体说明可以参考蟋蟀大哥的文章 ASP.NET WebApi OWIN 实现 OAuth 2.0 &#xff0c;我的实际代码也是基于文章给出的源码修改的。 第一步 认…

天猫精灵对接智能设备

why to do&#xff1a;   我之前一直很喜欢智能家居&#xff0c;可惜的是现在市场上成品的智能家居实在是太贵了&#xff0c;屌丝的码农是在背不起每月高额的房贷和装修费用的基础上&#xff0c;再买成品的智能设备&#xff08;像某米那样一个智能开关&#xff0c;竟然卖那么…

从零玩转系列之SpringBoot3-核心原理

一、简介 1.前置知识 ● Java17 ● Spring、SpringMVC、MyBatis ● Maven、IDEA 2.环境要求 环境&工具版本(or later)SpringBoot3.1.xIDEA2023.xJava17Maven3.5Tomcat10.0Servlet5.0GraalVM Community22.3Native Build Tools0.9.19 二、SpringBoot3-核心原理 1.事件和监听器…

SpringBoot3【⑤ 核心原理】

1. 事件和监听器 1. 生命周期监听 场景&#xff1a;监听应用的生命周期 1. 监听器-SpringApplicationRunListener 自定义SpringApplicationRunListener来监听事件&#xff1b; 1.1. 编写SpringApplicationRunListener 这个接口的实现类 1.2. 在 META-INF/spring.factories …

开发必备,开源 or 免费的 AI 编程助手

AI 大模型的火热&#xff0c;让开发圈近来如虎添翼&#xff0c;各种各样基于 AI 技术的开发者工具和新范式不断涌现&#xff0c;尤其是 Github 和 OpenAI 共同推出的 Copilot X &#xff0c;更是一骑绝尘。本文推荐一些开源 or 免费的 AI 编程工具&#xff0c;不妨试着用起来。…

超过5000人的2年研究表明,这一活动破坏你的身心健康

Tips 原文作者&#xff1a;Minda Zetlin 原文出处&#xff1a;A 2-Year Study of More Than 5,000 People Shows This 1 Activity Destroys Your Emotional and Physical Health 阅读时&#xff0c;把文中的 Fackbook 换成微信。 国外主要用 Facebook&#xff1b; 国内主要是微…

申请阿里云服务器并搭建公网可支持数据上传下载的HTTP服务器

1. 前言 拥有一台自己的云服务器可以做很多事情。阿里云服务器毫无疑问是国内最好的。 阿里云服务器可以用于各种互联网应用的搭建和运行&#xff0c;提供稳定、高性能的服务。 阿里云服务器的用途&#xff0c;包括但不限于以下几个方面&#xff1a; 网站托管&#xff1a;可以将…

谷歌眼镜秀出时尚风采:对面的女孩看过来

摘要&#xff1a;在近日举办的纽约时尚周上&#xff0c;让身材火辣的模特带上谷歌的眼镜&#xff0c;行走在T台之上。主打时尚牌&#xff0c;进一步加固谷歌眼镜在大众消费阶层的印象&#xff0c;尤其是女性消费者。谷歌眼镜创始人Sebastian Thrun指出&#xff1a;谷歌眼镜特别…

学生台灯什么牌子好对眼睛好?专业护眼灯的学生台灯分享

据报告统计&#xff0c;2022年我国儿童青少年总体近视率为52.7%&#xff0c;其中6岁儿童为14.3%&#xff0c;小学生为35.6%&#xff0c;初中生为71.1%&#xff0c;高中生为80.5%&#xff0c;这些数据让人不寒而栗&#xff01; 专家表示&#xff0c;导致儿童青少年近视的因素&am…

【UGP VR眼镜排行榜】2018VR眼镜眼镜哪个好?什么VR眼镜值得买?综合推荐十大热品

科技的发展&#xff0c;高科技产品层出不穷&#xff0c;VR眼镜的出现使人们足不出户也能享受到高品质的观影感受。VR(Virtual Reality&#xff09;即虚拟现实&#xff0c;简称VR.虚拟现实头戴显示器设备&#xff0c;简称VR头显VR眼镜.现在&#xff0c;VR眼镜已不是什么稀奇的东…

《谷歌眼镜》新书作者:眼镜需要成为AR的载体吗?

近10年前&#xff0c;谷歌推出了首款AR眼镜Google Glass&#xff0c;尽管这款产品并没有如预期般取得成功&#xff0c;但它为后续AR硬件技术的发展奠定了基础。我们知道&#xff0c;从微软HoloLens开始&#xff0c;AR头显/眼镜产品更侧重于B端应用&#xff0c;面向C端发售的很少…

Karl Guttag:现有Micro LED/LCoS+光波导AR眼镜对比解析

轻量化是未来AR眼镜的发展趋势&#xff0c;为了缩减尺寸&#xff0c;AR眼镜厂商尝试了多种方案&#xff0c;长期来看Micro LED光机在小型化上更有优势&#xff0c;但现阶段LCoS光机的图像表现更好。在CES 2023期间&#xff0c;DigiLens、Lumus、Vuzix、OPPO、Avegant也展出了不…

偏光太阳镜测试图片软件,[专题]真假偏光太阳镜简单、实用辨别方法!

偏光太阳镜主要是通过镜片的平衡排列的结晶体原理&#xff0c;只让与晶体平衡的光波通过&#xff0c;而向其它角度震动的光波会一律被阻挡的方法(如同百叶窗的原理)制作而成。 正是利用这种原理&#xff0c;偏光太阳镜便可以有效地排除和滤除光束中的偏振光&#xff0c;使光线能…

智能眼镜的两种显示方式

to管理员&#xff1a;哪一个是广告&#xff0c;全是广告&#xff01;难不成网友的链接都不能给了&#xff1f;&#xff01;你们的评判标识是什么&#xff1f; 就现有的技术而言&#xff0c;受限于通讯及周边模块、电源的限制&#xff0c;眼镜只适合于作为显示器使用。 眼镜显示…

谷歌眼镜

谷歌眼镜(Google Project Glass)是由谷歌公司于2012年4月发布的一款“拓展现实”眼镜&#xff0c;它具有和智能手机一样的功能&#xff0c;可以通过声音控制拍照&#xff0c;视频通话和辨明方向以及上网冲浪、处理文字信息和电子邮件等。 查看精彩图册 目录 产品简介 发布信息…

微信小程序开发制作 | 小程序开发者工具功能介绍

小程序开发者工具是微信官方提供的用于开发和调试小程序的工具。它支持 Windows 和 Mac 两种操作系统&#xff0c;并提供了许多实用的功能&#xff0c;使得小程序开发者能够快速地开发和调试小程序。 下面是小程序开发者工具的主要功能介绍&#xff1a; 1.编辑器&#xff1a;…

微信里的小程序怎么制作

自小程序普及以来&#xff0c;除了公司企业&#xff0c;很多的个体户商家都会想了解微信里的小程序怎么制作的&#xff0c;毕竟小程序能解决很多经营上的需求。那么就给大家讲解微信里的小程序怎么制作的流程&#xff0c;希望大家对此能有了解。 流程一、制作小程序前准备 我…

微信小程序开发之——制作表格

一 概述 表格样式一表格样式二 二 绘制过程 外层设置display:table&#xff0c;并设置border-collapse表格边框模型表头设置display:table-row&#xff0c;单元格设置为display:table-cell每一行单元格同表头设置 三 示例代码 3.1 table.wxml(布局文件) <view class&qu…