using System.Net; using System.Text; using Common; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using NLog; using RestSharp; namespace UseSQLQueryData.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class HiWeiController : ControllerBase { public static string HiWeiKey = "HiWei_"; public static int ExpireTimer = 60 * 3; public string? HiWeiAppId { get; set; } public string? HiWeiAppSecret { get; set; } public IConfiguration ConfigurationBuilder { get; set; } public static Logger logger = NLog.LogManager.GetCurrentClassLogger(); public HiWeiController(IConfiguration config) { this.ConfigurationBuilder = config; HiWeiAppId = config["HiWeiAppId"]; HiWeiAppSecret = config["HiWeiAppSecret"]; } [HttpGet()] //public ReturnInfo HiWeiOAuthRequest(string response_type, string client_id, string client_secret, string redirect_uri) public ReturnInfo HiWeiOAuthRequest(string? response_type, string? client_id, string? client_secret, string? redirect_uri, string? code, string? refresh_token) { ReturnInfo returninfo = new ReturnInfo(); try { //code wijsv8hf5izejkny 6c1014dab24c41369068d12e4f7e145c http://tvos.hw-iot.com.cn/voice-service/token/auth/SKG9ZSC3| logger.Error("Data:" + response_type + " " + client_id + " " + client_secret + " " + redirect_uri); Random r = new Random(); int newcode = r.Next(1, 10000); string id = HiWeiAppId; string secret = HiWeiAppSecret; string Key = HiWeiKey + newcode; if (response_type.Equals("code") && client_id.Equals(id) && client_secret.Equals(secret)) { var t1 = Guid.NewGuid().ToString(); var t2 = Guid.NewGuid().ToString(); var t3 = Guid.NewGuid().ToString(); var t4 = Guid.NewGuid().ToString(); var token = Convert.ToBase64String(Encoding.UTF8.GetBytes(t1 + "###" + t2)); var reftoken = Convert.ToBase64String(Encoding.UTF8.GetBytes(t3 + "###" + t4)); HiWeiToken g = new HiWeiToken(); g.access_token = token; g.refresh_token = reftoken; g.expires_in = new TimeSpan(20, 0, 0).TotalSeconds; CSRedisCacheHelper.redis3.Set(Key, g, ExpireTimer); CSRedisCacheHelper.redis3.Set(refresh_token, g, ExpireTimer); var client1 = new RestClient(redirect_uri); var request1 = new RestRequest("", Method.Get); request1.AddQueryParameter("code", newcode); var QQQ = client1.Execute(request1); var content = QQQ.Content; logger.Error("返回的数据为:" + content); HttpStatusCode HHH = QQQ.StatusCode; } else { returninfo.isok = false; returninfo.message = "没有授权"; } Dictionary codere = new Dictionary(); codere.Add("code", newcode); returninfo.isok = true; returninfo.response = codere; } catch (Exception ex) { returninfo.isok = false; returninfo.message = ex.Message; } return returninfo; } [HttpGet()] public object mytoken(string code) { return "aaaaa"; } [HttpPost()] public object gettoken([FromBody] Data data) { //ReturnInfo re = new ReturnInfo(); try { var ttt = System.Text.Json.JsonSerializer.Serialize(data); logger.Error("获取token:" + ttt); string grant_type = data.grant_type; string code = data.code; if (grant_type.Equals("authorization_code")) { logger.Error("code: " + code); string Key = HiWeiKey + code; var hi = CSRedisCacheHelper.redis3.Get(Key); if (hi != null) { logger.Error("返回了"); return hi; } else { logger.Error("没有获取到"); return null; } } else if (grant_type.Equals("refresh_token")) { var hi = CSRedisCacheHelper.redis3.Get("11111232323"); if (hi != null) { return hi; } else { return hi; } } return null; } catch (Exception ex) { return null; } } } public class Data { public string code { get; set; } public string grant_type { get; set; } public string client_secret { get; set; } public string client_id { get; set; } } public class HiWeiToken { public string access_token { get; set; } public string refresh_token { get; set; } public double expires_in { get; set; } } }