微信蓝牙设备开发教程之设备授权(3)
@V型知识库 原创已推出最新微信硬件jsapi学习笔记 地址 http://www.vxzsk.com/282.html
设备授权:新接口,厂商不需要提供deviceid
为了简化第三方厂商的生产流程,降低接入微信的门槛,公众平台提供了新的设备授权接口。新接口中,deviceid由微信生成,作为设备在微信平台的唯一标识,第三方不需要在固件中烧入deviceid。deviceid和设备二维码在上一节已经讲过。
设备授权流程如下:
【微信蓝牙设备开发教程之设备授权(3)】
文章图片
设备功能服务器设置:
文章图片
这是微信硬件设备服务器设置,如果硬件设备类型返回到H5界面,可关闭此项功能。
连接硬件后交互数据的返回有两种,一种就是硬件通过蓝牙返回到服务器端,也就是上图中的URL地址上,另一种就是直接返回到操作的H5界面上,如果用户操作H5界面硬件无响应数据,那么极有可能微信通过硬件设备把数据返回到我们配置的URL上了。可要求硬件设备厂商修改硬件芯片程序,把程序改成返回H5界面类型。
java授权代码:
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
/****
*
* @author www.vxzsk.com V型知识库
*
*/
public class DeviceAuthTest {
/**
* V型知识库
* 模拟post方法
*/
public static String sendPost(String requrl,String param){
URL url;
String sTotalString="";
try {
url = new URL(requrl);
URLConnection connection = url.openConnection();
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("Content-Type", "text/xml");
// connection.setRequestProperty("Content-Length", body.getBytes().length+"");
connection.setRequestProperty("User-Agent",
"Mozilla/5.0 (compatible;
MSIE 9.0;
Windows NT 6.1;
Trident/5.0)");
connection.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "utf-8");
out.write(param);
// 向页面传递数据。post的关键所在!
out.flush();
out.close();
// 一旦发送成功,用以下方法就可以得到服务器的回应:
String sCurrentLine;
sCurrentLine = "";
sTotalString = "";
InputStream l_urlStream;
l_urlStream = connection.getInputStream();
// 传说中的三层包装阿!
BufferedReader l_reader = new BufferedReader(new InputStreamReader(
l_urlStream));
while ((sCurrentLine = l_reader.readLine()) != null) {
sTotalString += sCurrentLine + "\r\n";
}} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}System.out.println(sTotalString);
return sTotalString;
}
public static void main(String[] args) {
String access_token="";
//更换为自己的access_token
String deviceId="";
//调用生成二维码接口返回的设备id
String mac="";
//设备mac地址,可询问提供硬件设备的厂商人员
String params="{\"device_num\":\"1\",\"device_list\":[{"
+"\"id\":\""+deviceId+"\","
+"\"mac\":\""+mac+"\","
+"\"connect_protocol\":\"3\","
+"\"auth_key\":\"\","
+"\"close_strategy\":\"1\","
+"\"conn_strategy\":\"1\","
+"\"crypt_method\":\"0\","
+"\"auth_ver\":\"0\","
+"\"manu_mac_pos\":\"-1\","
+"\"ser_mac_pos\":\"-2\","
+"\"ble_simple_protocol\": \"0\""
+ "}],"
+"\"op_type\":\"1\""
+ "}";
String s=DeviceAuthTest.sendPost("https://api.weixin.qq.com/device/authorize_device?access_token="+access_token, params);
System.out.println("返回:"+s);
}
}
用户把上述代码复制到自己工程里,执行main方法即可。
在main方法中读者要填充几个参数,其中67行的access_token参数可在http://www.vxzsk.com/28.html地址参考。
mac地址询问硬件设备提供商。
返回结果
成功:json方式返回授权成功的设备
1 2 3 4 5 6 7 8 9 10 11 | {
"resp"
:[
{
"base_info"
:
{
"device_type"
:
"your_devcie_type"
,
"device_id"
:
"id"
},
"errcode"
:
0
,
"errmsg"
:
"ok"
} ]} |
具体params中各个参数含义,请读者自行查阅微信官方文档。
推荐阅读
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 员工的微信朋友圈是公司的宣传阵地吗()
- FBI怎么和恐怖分子谈判
- Android|Android install 多个设备时指定设备
- 分享!如何分分钟实现微信扫二维码调用外部浏览器打开指定页面的功能
- Android|Android BLE蓝牙连接异常处理
- 微信小程序基础知识
- 使用Promise对微信小程序wx.request请求方法进行封装
- 茶事|茶事 | 单丛里的一泡奇葩
- 微信小程序请求接口格式