Commit 0a28faf7808b7995c13fff64e718eb61a960f20a
1 parent
241d25d8
Exists in
master
获取Token代码整合,加入刷新Token的方法
Showing
3 changed files
with
147 additions
and
53 deletions
Show diff stats
springboot/src/main/java/com/sincre/springboot/common/Encript.java
... | ... | @@ -37,7 +37,6 @@ public class Encript { |
37 | 37 | sha256_HMAC.init(secret_key); |
38 | 38 | byte[] bytes = sha256_HMAC.doFinal(message.getBytes()); |
39 | 39 | hash = byteArrayToHexString(bytes); |
40 | - System.out.println(hash); | |
41 | 40 | } catch (Exception e) { |
42 | 41 | System.out.println("Error HmacSHA256 ===========" + e.getMessage()); |
43 | 42 | } | ... | ... |
springboot/src/main/java/com/sincre/springboot/controller/TuYaYunController.java
... | ... | @@ -2,12 +2,14 @@ package com.sincre.springboot.controller; |
2 | 2 | |
3 | 3 | import com.fasterxml.jackson.core.type.TypeReference; |
4 | 4 | import com.fasterxml.jackson.databind.ObjectMapper; |
5 | -import com.sincre.springboot.ApiModel.*; | |
5 | +import com.sincre.springboot.ApiModel.DeviceToken; | |
6 | +import com.sincre.springboot.ApiModel.TuYaDevicesList; | |
7 | +import com.sincre.springboot.ApiModel.TuYaResResult; | |
8 | +import com.sincre.springboot.ApiModel.UserInfo; | |
6 | 9 | import com.sincre.springboot.ApiPlatform.TuYaCloudService; |
7 | -import com.sincre.springboot.common.EhcacheUtil; | |
8 | 10 | import com.sincre.springboot.utils.ApiHelper; |
11 | +import com.sincre.springboot.utils.CacheHelper; | |
9 | 12 | import io.swagger.annotations.Api; |
10 | -import org.apache.commons.lang3.StringUtils; | |
11 | 13 | import org.springframework.web.bind.annotation.*; |
12 | 14 | |
13 | 15 | import java.util.HashMap; |
... | ... | @@ -18,42 +20,12 @@ import java.util.Map; |
18 | 20 | @Api(value = "涂鸦云服务API调用") |
19 | 21 | public class TuYaYunController { |
20 | 22 | |
21 | - @GetMapping("GetToken") | |
22 | - public TuYaResResult getTuYaToken(){ | |
23 | - | |
24 | - String apiUrl = "/v1.0/token?grant_type=1"; | |
25 | - Long t = System.currentTimeMillis(); | |
26 | - //Token获取前的签名 | |
27 | - String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+t,TuYaCloudService.Secret); | |
28 | - Map<String,String> map = new HashMap(); | |
29 | - map.put("client_id", TuYaCloudService.ClientId); | |
30 | - map.put("sign",sign); | |
31 | - map.put("sign_method",TuYaCloudService.Sign_method); | |
32 | - map.put("t",t.toString()); | |
33 | - String result = ApiHelper.doGet(TuYaCloudService.TuYaOpenUrl + apiUrl,map); | |
34 | - | |
35 | - TuYaResResult<TuYaResTokenObj> resResult = new TuYaResResult<>(); | |
36 | - try{ | |
37 | - ObjectMapper objectMapper = new ObjectMapper(); | |
38 | - resResult = objectMapper.readValue(result,new TypeReference<TuYaResResult<TuYaResTokenObj>>(){}); | |
39 | - | |
40 | - String access_Token = resResult.getResult().getAccess_token(); //存储第一次获取的Token | |
41 | - EhcacheUtil ehcacheUtil = new EhcacheUtil(); | |
42 | - ehcacheUtil.setex("TuYa_Token",access_Token,60); | |
43 | - } catch(Exception ex){ | |
44 | - System.out.println(ex.getMessage()); | |
45 | - } | |
46 | - | |
47 | - return resResult; | |
48 | - } | |
49 | - | |
50 | 23 | @GetMapping("GetDevicesInfo") |
51 | 24 | public TuYaResResult getTuYaDevicesInfo(){ |
52 | 25 | |
53 | - EhcacheUtil ehcacheUtil = new EhcacheUtil(); | |
54 | 26 | String apiUrl = "/v1.0/devices?device_ids="; |
55 | 27 | Long t = System.currentTimeMillis(); |
56 | - String access_Token = ehcacheUtil.get("TuYa_Token"); | |
28 | + String access_Token = CacheHelper.getTuYaToken(); | |
57 | 29 | String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret); |
58 | 30 | Map<String,String> map = new HashMap(); |
59 | 31 | map.put("client_id", TuYaCloudService.ClientId); |
... | ... | @@ -68,7 +40,6 @@ public class TuYaYunController { |
68 | 40 | ObjectMapper objectMapper = new ObjectMapper(); |
69 | 41 | TypeReference<TuYaResResult<TuYaDevicesList>> reference = new TypeReference<TuYaResResult<TuYaDevicesList>>(){}; |
70 | 42 | resResult = objectMapper.readValue(result,reference); |
71 | - System.out.println(resResult.getResult().total); | |
72 | 43 | } catch(Exception ex){ |
73 | 44 | System.out.println(ex.getMessage()); |
74 | 45 | } |
... | ... | @@ -88,12 +59,9 @@ public class TuYaYunController { |
88 | 59 | @GetMapping("{AppId}/GetTuYaAPPUser") |
89 | 60 | public String getTuYaAPPUser(@PathVariable("AppId") String AppId, @RequestParam int pageIndex, @RequestParam int pageSize){ |
90 | 61 | |
91 | - EhcacheUtil ehcacheUtil = new EhcacheUtil(); | |
92 | - | |
93 | 62 | String apiUrl = String.format("/v1.0/apps/%s/users?page_no=%d&page_size=%d",AppId,pageIndex,pageSize);//iotshunzhi |
94 | 63 | Long t = System.currentTimeMillis(); |
95 | - String access_Token = ehcacheUtil.get("TuYa_Token"); | |
96 | - System.out.println(access_Token); | |
64 | + String access_Token = CacheHelper.getTuYaToken(); | |
97 | 65 | //Token获取后的签名 |
98 | 66 | String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret); |
99 | 67 | Map<String,String> headMap = new HashMap(); |
... | ... | @@ -112,11 +80,9 @@ public class TuYaYunController { |
112 | 80 | @PostMapping("{AppId}/AddTuYaAPPUser") |
113 | 81 | public String addTuYaAPPUser(@PathVariable("AppId") String AppId,@RequestBody UserInfo userInfo){ |
114 | 82 | |
115 | - EhcacheUtil ehcacheUtil = new EhcacheUtil(); | |
116 | - | |
117 | 83 | String apiUrl = String.format("/v1.0/apps/%s/user",AppId);//应用标识iotshunzhi |
118 | 84 | Long t = System.currentTimeMillis(); |
119 | - String access_Token = ehcacheUtil.get("TuYa_Token"); | |
85 | + String access_Token = CacheHelper.getTuYaToken(); | |
120 | 86 | //Token获取后的签名 |
121 | 87 | String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret); |
122 | 88 | Map<String,String> headMap = new HashMap(); |
... | ... | @@ -131,7 +97,6 @@ public class TuYaYunController { |
131 | 97 | String jsonResult = ""; |
132 | 98 | try { |
133 | 99 | jsonResult = objectMapper.writeValueAsString(userInfo); |
134 | - System.out.println(jsonResult); | |
135 | 100 | }catch (com.fasterxml.jackson.core.JsonProcessingException ex){ |
136 | 101 | ex.printStackTrace(); |
137 | 102 | } |
... | ... | @@ -144,20 +109,41 @@ public class TuYaYunController { |
144 | 109 | } |
145 | 110 | |
146 | 111 | /** |
112 | + * 根据用户ID来获取用户账号下的所有设备 | |
113 | + * @param uid | |
114 | + * @return | |
115 | + */ | |
116 | + @GetMapping("{uid}/GetDevicesByUid") | |
117 | + public String getDevicesByUid(@PathVariable("uid") String uid){ | |
118 | + | |
119 | + String apiUrl = String.format("/v1.0/users/%s/devices",uid); | |
120 | + Long t = System.currentTimeMillis(); | |
121 | + String access_Token = CacheHelper.getTuYaToken(); | |
122 | + //Token获取后的签名 | |
123 | + String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret); | |
124 | + Map<String,String> map = new HashMap(); | |
125 | + map.put("client_id", TuYaCloudService.ClientId); | |
126 | + map.put("access_token",access_Token); | |
127 | + map.put("sign",sign); | |
128 | + map.put("sign_method",TuYaCloudService.Sign_method); | |
129 | + map.put("t",t.toString()); | |
130 | + | |
131 | + String result = ApiHelper.doGet(TuYaCloudService.TuYaOpenUrl + apiUrl,map); | |
132 | + | |
133 | + return result; | |
134 | + } | |
135 | + /** | |
147 | 136 | * 生成配网的Token |
148 | 137 | * @return |
149 | 138 | */ |
150 | 139 | @GetMapping("AddDevicesToken") |
151 | 140 | public String addDevicesToken(@RequestParam String UId){ |
152 | 141 | |
153 | - EhcacheUtil ehcacheUtil = new EhcacheUtil(); | |
154 | - | |
155 | 142 | String apiUrl = String.format("/v1.0/devices/token"); |
156 | 143 | Long t = System.currentTimeMillis(); |
157 | - String access_Token = ehcacheUtil.get("TuYa_Token"); | |
144 | + String access_Token = CacheHelper.getTuYaToken(); | |
158 | 145 | //Token获取后的签名 |
159 | 146 | String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret); |
160 | - System.out.println("签名"+sign); | |
161 | 147 | Map<String,String> map = new HashMap(); |
162 | 148 | map.put("client_id", TuYaCloudService.ClientId); |
163 | 149 | map.put("access_token",access_Token); |
... | ... | @@ -165,10 +151,6 @@ public class TuYaYunController { |
165 | 151 | map.put("sign_method",TuYaCloudService.Sign_method); |
166 | 152 | map.put("t",t.toString()); |
167 | 153 | |
168 | - if(StringUtils.isNotBlank(UId)){ | |
169 | - UId = "ay1557735327941UvZAG"; | |
170 | - } | |
171 | - | |
172 | 154 | ObjectMapper objectMapper = new ObjectMapper(); |
173 | 155 | DeviceToken deviceToken = new DeviceToken(); |
174 | 156 | deviceToken.setUid(UId); |
... | ... | @@ -177,7 +159,6 @@ public class TuYaYunController { |
177 | 159 | String jsonResult = ""; |
178 | 160 | try { |
179 | 161 | jsonResult = objectMapper.writeValueAsString(deviceToken); |
180 | - System.out.println(jsonResult); | |
181 | 162 | }catch (com.fasterxml.jackson.core.JsonProcessingException ex){ |
182 | 163 | ex.printStackTrace(); |
183 | 164 | } |
... | ... | @@ -185,4 +166,24 @@ public class TuYaYunController { |
185 | 166 | |
186 | 167 | return result; |
187 | 168 | } |
169 | + | |
170 | + @GetMapping("{token}/GetDevicesByToken") | |
171 | + public String getDevicesByToken(@PathVariable("token") String token){ | |
172 | + | |
173 | + String apiUrl = String.format("/v1.0/devices/tokens/%s",token); | |
174 | + Long t = System.currentTimeMillis(); | |
175 | + String access_Token = CacheHelper.getTuYaToken(); | |
176 | + //Token获取后的签名 | |
177 | + String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret); | |
178 | + Map<String,String> map = new HashMap(); | |
179 | + map.put("client_id", TuYaCloudService.ClientId); | |
180 | + map.put("access_token",access_Token); | |
181 | + map.put("sign",sign); | |
182 | + map.put("sign_method",TuYaCloudService.Sign_method); | |
183 | + map.put("t",t.toString()); | |
184 | + | |
185 | + String result = ApiHelper.doGet(TuYaCloudService.TuYaOpenUrl + apiUrl,map); | |
186 | + | |
187 | + return result; | |
188 | + } | |
188 | 189 | } | ... | ... |
springboot/src/main/java/com/sincre/springboot/utils/CacheHelper.java
0 → 100644
... | ... | @@ -0,0 +1,94 @@ |
1 | +package com.sincre.springboot.utils; | |
2 | + | |
3 | +import com.fasterxml.jackson.core.type.TypeReference; | |
4 | +import com.fasterxml.jackson.databind.ObjectMapper; | |
5 | +import com.sincre.springboot.ApiModel.TuYaResResult; | |
6 | +import com.sincre.springboot.ApiModel.TuYaResTokenObj; | |
7 | +import com.sincre.springboot.ApiPlatform.TuYaCloudService; | |
8 | +import com.sincre.springboot.common.EhcacheUtil; | |
9 | +import org.apache.commons.lang3.StringUtils; | |
10 | + | |
11 | +import java.util.HashMap; | |
12 | +import java.util.Map; | |
13 | + | |
14 | +public class CacheHelper { | |
15 | + | |
16 | + static EhcacheUtil ehcacheUtil = new EhcacheUtil(); | |
17 | + static String TuYaTokenKey = "TuYa_Token"; | |
18 | + static String TuYaRefreshTokenKey = "TuYa_Re_Token"; | |
19 | + private static void setTuYaToken(){ | |
20 | + | |
21 | + String apiUrl = "/v1.0/token?grant_type=1"; | |
22 | + Long t = System.currentTimeMillis(); | |
23 | + //Token获取前的签名 | |
24 | + String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+t,TuYaCloudService.Secret); | |
25 | + Map<String,String> map = new HashMap(); | |
26 | + map.put("client_id", TuYaCloudService.ClientId); | |
27 | + map.put("sign",sign); | |
28 | + map.put("sign_method",TuYaCloudService.Sign_method); | |
29 | + map.put("t",t.toString()); | |
30 | + String result = ApiHelper.doGet(TuYaCloudService.TuYaOpenUrl + apiUrl,map); | |
31 | + | |
32 | + TuYaResResult<TuYaResTokenObj> resResult ; | |
33 | + try{ | |
34 | + ObjectMapper objectMapper = new ObjectMapper(); | |
35 | + resResult = objectMapper.readValue(result,new TypeReference<TuYaResResult<TuYaResTokenObj>>(){}); | |
36 | + | |
37 | + String access_Token = resResult.getResult().getAccess_token(); //存储第一次获取的Token | |
38 | + String refresh_Token = resResult.getResult().getRefresh_token(); | |
39 | + // 第一次缓存数据的时候,不刷新,后期刷新 | |
40 | + if(StringUtils.isNotBlank(ehcacheUtil.get(TuYaTokenKey))){ | |
41 | + TuYaRefresh(resResult.getResult()); | |
42 | + }else { | |
43 | + ehcacheUtil.setex(TuYaTokenKey, access_Token, resResult.getResult().getExpire_time()); // 储存二个小时 | |
44 | + ehcacheUtil.setex(TuYaRefreshTokenKey,refresh_Token,60 * 60); // 储存一个小时 | |
45 | + System.out.println("获取Token:"+ access_Token); | |
46 | + System.out.println("刷新Token:"+ refresh_Token); | |
47 | + | |
48 | + } | |
49 | + } catch(Exception ex){ | |
50 | + System.out.println(ex.getMessage()); | |
51 | + } | |
52 | + } | |
53 | + | |
54 | + /** | |
55 | + * 获取涂鸦Api 访问的Token | |
56 | + * @return | |
57 | + */ | |
58 | + public static String getTuYaToken(){ | |
59 | + | |
60 | + if(StringUtils.isBlank(ehcacheUtil.get(TuYaRefreshTokenKey))){ | |
61 | + setTuYaToken(); | |
62 | + } | |
63 | + | |
64 | + return ehcacheUtil.get(TuYaTokenKey); | |
65 | + } | |
66 | + | |
67 | + private static void TuYaRefresh(TuYaResTokenObj tuYaResTokenObj){ | |
68 | + | |
69 | + String apiUrl = "/v1.0/token/"+tuYaResTokenObj.getRefresh_token(); | |
70 | + Long t = System.currentTimeMillis(); | |
71 | + | |
72 | + String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+t,TuYaCloudService.Secret); | |
73 | + Map<String,String> map = new HashMap(); | |
74 | + map.put("client_id", TuYaCloudService.ClientId); | |
75 | + map.put("sign",sign); | |
76 | + map.put("sign_method",TuYaCloudService.Sign_method); | |
77 | + map.put("t",t.toString()); | |
78 | + String result = ApiHelper.doGet(TuYaCloudService.TuYaOpenUrl + apiUrl,map); | |
79 | + | |
80 | + TuYaResResult<TuYaResTokenObj> resResult; | |
81 | + try{ | |
82 | + ObjectMapper objectMapper = new ObjectMapper(); | |
83 | + TypeReference<TuYaResResult<TuYaResTokenObj>> reference = new TypeReference<TuYaResResult<TuYaResTokenObj>>(){}; | |
84 | + resResult = objectMapper.readValue(result,reference); | |
85 | + String re_access_Token = resResult.getResult().getAccess_token(); //重新刷新后获取的Token | |
86 | + String refresh_Token = resResult.getResult().getRefresh_token(); | |
87 | + System.out.println("刷新后的Token:"+re_access_Token); | |
88 | + ehcacheUtil.setex(TuYaTokenKey,re_access_Token,resResult.getResult().getExpire_time()); // 储存两个小时 | |
89 | + ehcacheUtil.setex(TuYaRefreshTokenKey,refresh_Token,60 * 60); //储存一个小时 | |
90 | + } catch(Exception ex){ | |
91 | + System.out.println(ex.getMessage()); | |
92 | + } | |
93 | + } | |
94 | +} | ... | ... |