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,7 +37,6 @@ public class Encript { | ||
| 37 | sha256_HMAC.init(secret_key); | 37 | sha256_HMAC.init(secret_key); |
| 38 | byte[] bytes = sha256_HMAC.doFinal(message.getBytes()); | 38 | byte[] bytes = sha256_HMAC.doFinal(message.getBytes()); |
| 39 | hash = byteArrayToHexString(bytes); | 39 | hash = byteArrayToHexString(bytes); |
| 40 | - System.out.println(hash); | ||
| 41 | } catch (Exception e) { | 40 | } catch (Exception e) { |
| 42 | System.out.println("Error HmacSHA256 ===========" + e.getMessage()); | 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,12 +2,14 @@ package com.sincre.springboot.controller; | ||
| 2 | 2 | ||
| 3 | import com.fasterxml.jackson.core.type.TypeReference; | 3 | import com.fasterxml.jackson.core.type.TypeReference; |
| 4 | import com.fasterxml.jackson.databind.ObjectMapper; | 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 | import com.sincre.springboot.ApiPlatform.TuYaCloudService; | 9 | import com.sincre.springboot.ApiPlatform.TuYaCloudService; |
| 7 | -import com.sincre.springboot.common.EhcacheUtil; | ||
| 8 | import com.sincre.springboot.utils.ApiHelper; | 10 | import com.sincre.springboot.utils.ApiHelper; |
| 11 | +import com.sincre.springboot.utils.CacheHelper; | ||
| 9 | import io.swagger.annotations.Api; | 12 | import io.swagger.annotations.Api; |
| 10 | -import org.apache.commons.lang3.StringUtils; | ||
| 11 | import org.springframework.web.bind.annotation.*; | 13 | import org.springframework.web.bind.annotation.*; |
| 12 | 14 | ||
| 13 | import java.util.HashMap; | 15 | import java.util.HashMap; |
| @@ -18,42 +20,12 @@ import java.util.Map; | @@ -18,42 +20,12 @@ import java.util.Map; | ||
| 18 | @Api(value = "涂鸦云服务API调用") | 20 | @Api(value = "涂鸦云服务API调用") |
| 19 | public class TuYaYunController { | 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 | @GetMapping("GetDevicesInfo") | 23 | @GetMapping("GetDevicesInfo") |
| 51 | public TuYaResResult getTuYaDevicesInfo(){ | 24 | public TuYaResResult getTuYaDevicesInfo(){ |
| 52 | 25 | ||
| 53 | - EhcacheUtil ehcacheUtil = new EhcacheUtil(); | ||
| 54 | String apiUrl = "/v1.0/devices?device_ids="; | 26 | String apiUrl = "/v1.0/devices?device_ids="; |
| 55 | Long t = System.currentTimeMillis(); | 27 | Long t = System.currentTimeMillis(); |
| 56 | - String access_Token = ehcacheUtil.get("TuYa_Token"); | 28 | + String access_Token = CacheHelper.getTuYaToken(); |
| 57 | String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret); | 29 | String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret); |
| 58 | Map<String,String> map = new HashMap(); | 30 | Map<String,String> map = new HashMap(); |
| 59 | map.put("client_id", TuYaCloudService.ClientId); | 31 | map.put("client_id", TuYaCloudService.ClientId); |
| @@ -68,7 +40,6 @@ public class TuYaYunController { | @@ -68,7 +40,6 @@ public class TuYaYunController { | ||
| 68 | ObjectMapper objectMapper = new ObjectMapper(); | 40 | ObjectMapper objectMapper = new ObjectMapper(); |
| 69 | TypeReference<TuYaResResult<TuYaDevicesList>> reference = new TypeReference<TuYaResResult<TuYaDevicesList>>(){}; | 41 | TypeReference<TuYaResResult<TuYaDevicesList>> reference = new TypeReference<TuYaResResult<TuYaDevicesList>>(){}; |
| 70 | resResult = objectMapper.readValue(result,reference); | 42 | resResult = objectMapper.readValue(result,reference); |
| 71 | - System.out.println(resResult.getResult().total); | ||
| 72 | } catch(Exception ex){ | 43 | } catch(Exception ex){ |
| 73 | System.out.println(ex.getMessage()); | 44 | System.out.println(ex.getMessage()); |
| 74 | } | 45 | } |
| @@ -88,12 +59,9 @@ public class TuYaYunController { | @@ -88,12 +59,9 @@ public class TuYaYunController { | ||
| 88 | @GetMapping("{AppId}/GetTuYaAPPUser") | 59 | @GetMapping("{AppId}/GetTuYaAPPUser") |
| 89 | public String getTuYaAPPUser(@PathVariable("AppId") String AppId, @RequestParam int pageIndex, @RequestParam int pageSize){ | 60 | public String getTuYaAPPUser(@PathVariable("AppId") String AppId, @RequestParam int pageIndex, @RequestParam int pageSize){ |
| 90 | 61 | ||
| 91 | - EhcacheUtil ehcacheUtil = new EhcacheUtil(); | ||
| 92 | - | ||
| 93 | String apiUrl = String.format("/v1.0/apps/%s/users?page_no=%d&page_size=%d",AppId,pageIndex,pageSize);//iotshunzhi | 62 | String apiUrl = String.format("/v1.0/apps/%s/users?page_no=%d&page_size=%d",AppId,pageIndex,pageSize);//iotshunzhi |
| 94 | Long t = System.currentTimeMillis(); | 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 | //Token获取后的签名 | 65 | //Token获取后的签名 |
| 98 | String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret); | 66 | String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret); |
| 99 | Map<String,String> headMap = new HashMap(); | 67 | Map<String,String> headMap = new HashMap(); |
| @@ -112,11 +80,9 @@ public class TuYaYunController { | @@ -112,11 +80,9 @@ public class TuYaYunController { | ||
| 112 | @PostMapping("{AppId}/AddTuYaAPPUser") | 80 | @PostMapping("{AppId}/AddTuYaAPPUser") |
| 113 | public String addTuYaAPPUser(@PathVariable("AppId") String AppId,@RequestBody UserInfo userInfo){ | 81 | public String addTuYaAPPUser(@PathVariable("AppId") String AppId,@RequestBody UserInfo userInfo){ |
| 114 | 82 | ||
| 115 | - EhcacheUtil ehcacheUtil = new EhcacheUtil(); | ||
| 116 | - | ||
| 117 | String apiUrl = String.format("/v1.0/apps/%s/user",AppId);//应用标识iotshunzhi | 83 | String apiUrl = String.format("/v1.0/apps/%s/user",AppId);//应用标识iotshunzhi |
| 118 | Long t = System.currentTimeMillis(); | 84 | Long t = System.currentTimeMillis(); |
| 119 | - String access_Token = ehcacheUtil.get("TuYa_Token"); | 85 | + String access_Token = CacheHelper.getTuYaToken(); |
| 120 | //Token获取后的签名 | 86 | //Token获取后的签名 |
| 121 | String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret); | 87 | String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret); |
| 122 | Map<String,String> headMap = new HashMap(); | 88 | Map<String,String> headMap = new HashMap(); |
| @@ -131,7 +97,6 @@ public class TuYaYunController { | @@ -131,7 +97,6 @@ public class TuYaYunController { | ||
| 131 | String jsonResult = ""; | 97 | String jsonResult = ""; |
| 132 | try { | 98 | try { |
| 133 | jsonResult = objectMapper.writeValueAsString(userInfo); | 99 | jsonResult = objectMapper.writeValueAsString(userInfo); |
| 134 | - System.out.println(jsonResult); | ||
| 135 | }catch (com.fasterxml.jackson.core.JsonProcessingException ex){ | 100 | }catch (com.fasterxml.jackson.core.JsonProcessingException ex){ |
| 136 | ex.printStackTrace(); | 101 | ex.printStackTrace(); |
| 137 | } | 102 | } |
| @@ -144,20 +109,41 @@ public class TuYaYunController { | @@ -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 | * 生成配网的Token | 136 | * 生成配网的Token |
| 148 | * @return | 137 | * @return |
| 149 | */ | 138 | */ |
| 150 | @GetMapping("AddDevicesToken") | 139 | @GetMapping("AddDevicesToken") |
| 151 | public String addDevicesToken(@RequestParam String UId){ | 140 | public String addDevicesToken(@RequestParam String UId){ |
| 152 | 141 | ||
| 153 | - EhcacheUtil ehcacheUtil = new EhcacheUtil(); | ||
| 154 | - | ||
| 155 | String apiUrl = String.format("/v1.0/devices/token"); | 142 | String apiUrl = String.format("/v1.0/devices/token"); |
| 156 | Long t = System.currentTimeMillis(); | 143 | Long t = System.currentTimeMillis(); |
| 157 | - String access_Token = ehcacheUtil.get("TuYa_Token"); | 144 | + String access_Token = CacheHelper.getTuYaToken(); |
| 158 | //Token获取后的签名 | 145 | //Token获取后的签名 |
| 159 | String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret); | 146 | String sign = TuYaCloudService.createSign(TuYaCloudService.ClientId+access_Token+t,TuYaCloudService.Secret); |
| 160 | - System.out.println("签名"+sign); | ||
| 161 | Map<String,String> map = new HashMap(); | 147 | Map<String,String> map = new HashMap(); |
| 162 | map.put("client_id", TuYaCloudService.ClientId); | 148 | map.put("client_id", TuYaCloudService.ClientId); |
| 163 | map.put("access_token",access_Token); | 149 | map.put("access_token",access_Token); |
| @@ -165,10 +151,6 @@ public class TuYaYunController { | @@ -165,10 +151,6 @@ public class TuYaYunController { | ||
| 165 | map.put("sign_method",TuYaCloudService.Sign_method); | 151 | map.put("sign_method",TuYaCloudService.Sign_method); |
| 166 | map.put("t",t.toString()); | 152 | map.put("t",t.toString()); |
| 167 | 153 | ||
| 168 | - if(StringUtils.isNotBlank(UId)){ | ||
| 169 | - UId = "ay1557735327941UvZAG"; | ||
| 170 | - } | ||
| 171 | - | ||
| 172 | ObjectMapper objectMapper = new ObjectMapper(); | 154 | ObjectMapper objectMapper = new ObjectMapper(); |
| 173 | DeviceToken deviceToken = new DeviceToken(); | 155 | DeviceToken deviceToken = new DeviceToken(); |
| 174 | deviceToken.setUid(UId); | 156 | deviceToken.setUid(UId); |
| @@ -177,7 +159,6 @@ public class TuYaYunController { | @@ -177,7 +159,6 @@ public class TuYaYunController { | ||
| 177 | String jsonResult = ""; | 159 | String jsonResult = ""; |
| 178 | try { | 160 | try { |
| 179 | jsonResult = objectMapper.writeValueAsString(deviceToken); | 161 | jsonResult = objectMapper.writeValueAsString(deviceToken); |
| 180 | - System.out.println(jsonResult); | ||
| 181 | }catch (com.fasterxml.jackson.core.JsonProcessingException ex){ | 162 | }catch (com.fasterxml.jackson.core.JsonProcessingException ex){ |
| 182 | ex.printStackTrace(); | 163 | ex.printStackTrace(); |
| 183 | } | 164 | } |
| @@ -185,4 +166,24 @@ public class TuYaYunController { | @@ -185,4 +166,24 @@ public class TuYaYunController { | ||
| 185 | 166 | ||
| 186 | return result; | 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 @@ | @@ -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 | +} |