CoreAPIHttpService.cs 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. using Microsoft.Extensions.Configuration;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Net;
  5. using System.Net.Http;
  6. using System.Net.Http.Json;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using TEAMModelOS.SDK.Extension;
  10. namespace TEAMModelOS.SDK.Models.Service
  11. {
  12. public class CoreAPIHttpService
  13. {
  14. private readonly HttpClient _httpClient;
  15. public CoreAPIHttpService(HttpClient httpClient)
  16. {
  17. _httpClient = httpClient;
  18. }
  19. /// <summary>
  20. /// 隐式登录
  21. /// </summary>
  22. /// <param name="clientID"></param>
  23. /// <param name="clientSecret"></param>
  24. /// <param name="location"></param>
  25. /// <param name="url"></param>
  26. /// <param name="data"></param>
  27. /// <returns></returns>
  28. public async Task<TmdidImplicit> Implicit( Dictionary<string,string> data,string location, IConfiguration _configuration)
  29. {
  30. var url = _configuration.GetValue<string>("HaBookAuth:CoreAPI");
  31. url = "https://api2-rc.teammodel.cn";
  32. url = $"{url}/oauth2/implicit";
  33. var clientID = _configuration.GetValue<string>("HaBookAuth:CoreService:clientID");
  34. var clientSecret = _configuration.GetValue<string>("HaBookAuth:CoreService:clientSecret");
  35. if (location.Contains("China"))
  36. {
  37. location = "China";
  38. }
  39. else if (location.Contains("Global"))
  40. {
  41. location = "Global";
  42. }
  43. var token = await CoreTokenExtensions.CreateAccessToken(clientID, clientSecret, location);
  44. if (_httpClient.DefaultRequestHeaders.Contains("Authorization"))
  45. {
  46. _httpClient.DefaultRequestHeaders.Remove("Authorization");
  47. }
  48. _httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {token.AccessToken}");
  49. HttpResponseMessage responseMessage = await _httpClient.PostAsJsonAsync(url, data);
  50. if (responseMessage.StatusCode == HttpStatusCode.OK)
  51. {
  52. string content=await responseMessage.Content.ReadAsStringAsync();
  53. if (!string.IsNullOrEmpty(content))
  54. {
  55. TmdidImplicit tmdidImplicit = content.ToObject<TmdidImplicit>();
  56. return tmdidImplicit;
  57. }
  58. else
  59. {
  60. return null;
  61. }
  62. }
  63. else if (responseMessage.StatusCode == HttpStatusCode.Unauthorized)
  64. {
  65. return null;
  66. }
  67. else
  68. {
  69. return null;
  70. }
  71. }
  72. /// <summary>
  73. /// 隐式登录
  74. /// </summary>
  75. /// <param name="clientID"></param>
  76. /// <param name="clientSecret"></param>
  77. /// <param name="location"></param>
  78. /// <param name="url"></param>
  79. /// <param name="data"></param>
  80. /// <returns></returns>
  81. public async Task<CoreUser> GetUserInfo(Dictionary<string, string> data, string location, IConfiguration _configuration)
  82. {
  83. var url = _configuration.GetValue<string>("HaBookAuth:CoreAPI");
  84. url = "https://api2-rc.teammodel.cn";
  85. url = $"{url}/oauth2/getuserinfo";
  86. var clientID = _configuration.GetValue<string>("HaBookAuth:CoreService:clientID");
  87. var clientSecret = _configuration.GetValue<string>("HaBookAuth:CoreService:clientSecret");
  88. if (location.Contains("China"))
  89. {
  90. location = "China";
  91. }
  92. else if (location.Contains("Global"))
  93. {
  94. location = "Global";
  95. }
  96. var token = await CoreTokenExtensions.CreateAccessToken(clientID, clientSecret, location);
  97. if (_httpClient.DefaultRequestHeaders.Contains("Authorization"))
  98. {
  99. _httpClient.DefaultRequestHeaders.Remove("Authorization");
  100. }
  101. _httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {token.AccessToken}");
  102. HttpResponseMessage responseMessage = await _httpClient.PostAsJsonAsync(url, data);
  103. if (responseMessage.StatusCode == HttpStatusCode.OK)
  104. {
  105. string content = await responseMessage.Content.ReadAsStringAsync();
  106. if (!string.IsNullOrEmpty(content))
  107. {
  108. CoreUserInfo coreUserInfo = content.ToObject<CoreUserInfo>();
  109. if (coreUserInfo != null)
  110. {
  111. bool isActivate = !string.IsNullOrWhiteSpace(coreUserInfo.password) || !string.IsNullOrWhiteSpace(coreUserInfo.passwordOld);
  112. CoreUser coreUser = new CoreUser
  113. {
  114. isActivate = isActivate,
  115. id = coreUserInfo.id,
  116. vid = coreUserInfo.vid,
  117. mail = coreUserInfo.mail,
  118. mobile = coreUserInfo.mobile,
  119. name = coreUserInfo.name,
  120. picture = coreUserInfo.picture,
  121. habook = coreUserInfo.habook,
  122. wechat = coreUserInfo.wechat,
  123. facebook = coreUserInfo.facebook,
  124. google = coreUserInfo.google,
  125. ding = coreUserInfo.ding,
  126. apple = coreUserInfo.apple,
  127. };
  128. return coreUser;
  129. }
  130. else
  131. {
  132. return null;
  133. }
  134. }
  135. else {
  136. return null;
  137. }
  138. }
  139. else if (responseMessage.StatusCode == HttpStatusCode.Unauthorized)
  140. {
  141. return null;
  142. }
  143. else
  144. {
  145. return null;
  146. }
  147. }
  148. }
  149. public class TmdidImplicit
  150. {
  151. public string id_token { get; set; }
  152. public string access_token { get; set; }
  153. public string expires_in { get; set; }
  154. public string token_type { get; set; }
  155. }
  156. public class CoreUser
  157. {
  158. public string id { get; set; }
  159. public string vid { get; set; }
  160. public string mail { get; set; }
  161. public string mobile { get; set; }
  162. public string name { get; set; }
  163. public string picture { get; set; }
  164. public string habook { get; set; }
  165. public string wechat { get; set; }
  166. public string facebook { get; set; }
  167. public string google { get; set; }
  168. public string ding { get; set; }
  169. public string apple { get; set; }
  170. public bool isActivate { get; set; }
  171. }
  172. public class CoreUserInfo : CoreUser
  173. {
  174. public string area { get; set; }
  175. public string country { get; set; }
  176. public string type { get; set; }
  177. public string password { get; set; }
  178. public string salt { get; set; }
  179. public string passwordOld { get; set; }
  180. public string saltOld { get; set; }
  181. }
  182. }