CoreAPIHttpService.cs 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  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.Text.Json;
  9. using System.Threading.Tasks;
  10. using TEAMModelOS.SDK.Extension;
  11. namespace TEAMModelOS.SDK
  12. {
  13. public class CoreAPIHttpService
  14. {
  15. private readonly HttpClient _httpClient;
  16. public CoreAPIHttpService(HttpClient httpClient)
  17. {
  18. _httpClient = httpClient;
  19. }
  20. /// <summary>
  21. /// 隐式登录
  22. /// </summary>
  23. /// <param name="clientID"></param>
  24. /// <param name="clientSecret"></param>
  25. /// <param name="location"></param>
  26. /// <param name="url"></param>
  27. /// <param name="data"></param>
  28. /// <returns></returns>
  29. public async Task<TmdidImplicit> Implicit( Dictionary<string,string> data,string location, IConfiguration _configuration)
  30. {
  31. var url = _configuration.GetValue<string>("HaBookAuth:CoreAPI");
  32. //url = "https://api2-rc.teammodel.cn";
  33. url = $"{url}/oauth2/implicit";
  34. var clientID = _configuration.GetValue<string>("HaBookAuth:CoreService:clientID");
  35. var clientSecret = _configuration.GetValue<string>("HaBookAuth:CoreService:clientSecret");
  36. if (location.Contains("China"))
  37. {
  38. location = "China";
  39. }
  40. else if (location.Contains("Global"))
  41. {
  42. location = "Global";
  43. }
  44. var token = await CoreTokenExtensions.CreateAccessToken(clientID, clientSecret, location);
  45. if (_httpClient.DefaultRequestHeaders.Contains("Authorization"))
  46. {
  47. _httpClient.DefaultRequestHeaders.Remove("Authorization");
  48. }
  49. _httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {token.AccessToken}");
  50. HttpResponseMessage responseMessage = await _httpClient.PostAsJsonAsync(url, data);
  51. if (responseMessage.StatusCode == HttpStatusCode.OK)
  52. {
  53. string content=await responseMessage.Content.ReadAsStringAsync();
  54. if (!string.IsNullOrEmpty(content))
  55. {
  56. TmdidImplicit tmdidImplicit = content.ToObject<TmdidImplicit>();
  57. return tmdidImplicit;
  58. }
  59. else
  60. {
  61. return null;
  62. }
  63. }
  64. else if (responseMessage.StatusCode == HttpStatusCode.Unauthorized)
  65. {
  66. return null;
  67. }
  68. else
  69. {
  70. return null;
  71. }
  72. }
  73. /// <summary>
  74. /// 获取多个用户信息
  75. /// </summary>
  76. /// <param name="clientID"></param>
  77. /// <param name="clientSecret"></param>
  78. /// <param name="location"></param>
  79. /// <param name="url"></param>
  80. /// <param name="data"></param>
  81. /// <returns></returns>
  82. public async Task<string> GetUserInfos(StringContent scontent, string location, IConfiguration _configuration) {
  83. var url = _configuration.GetValue<string>("HaBookAuth:CoreAPI");
  84. //url = "https://api2-rc.teammodel.cn";
  85. url = $"{url}/oauth2/getuserinfos";
  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.PostAsync(url, scontent);
  103. if (responseMessage.StatusCode == HttpStatusCode.OK)
  104. {
  105. string content = await responseMessage.Content.ReadAsStringAsync();
  106. if (!string.IsNullOrEmpty(content))
  107. {
  108. return content;
  109. }
  110. else
  111. {
  112. return null;
  113. }
  114. }
  115. else if (responseMessage.StatusCode == HttpStatusCode.Unauthorized)
  116. {
  117. return null;
  118. }
  119. else
  120. {
  121. return null;
  122. }
  123. }
  124. /// <summary>
  125. /// 获取单个用户信息
  126. /// </summary>
  127. /// <param name="clientID"></param>
  128. /// <param name="clientSecret"></param>
  129. /// <param name="location"></param>
  130. /// <param name="url"></param>
  131. /// <param name="data"></param>
  132. /// <returns></returns>
  133. public async Task<CoreUser> GetUserInfo(Dictionary<string, string> data, string location, IConfiguration _configuration)
  134. {
  135. var url = _configuration.GetValue<string>("HaBookAuth:CoreAPI");
  136. //url = "https://api2-rc.teammodel.cn";
  137. url = $"{url}/oauth2/getuserinfo";
  138. var clientID = _configuration.GetValue<string>("HaBookAuth:CoreService:clientID");
  139. var clientSecret = _configuration.GetValue<string>("HaBookAuth:CoreService:clientSecret");
  140. if (location.Contains("China"))
  141. {
  142. location = "China";
  143. }
  144. else if (location.Contains("Global"))
  145. {
  146. location = "Global";
  147. }
  148. var token = await CoreTokenExtensions.CreateAccessToken(clientID, clientSecret, location);
  149. if (_httpClient.DefaultRequestHeaders.Contains("Authorization"))
  150. {
  151. _httpClient.DefaultRequestHeaders.Remove("Authorization");
  152. }
  153. _httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {token.AccessToken}");
  154. HttpResponseMessage responseMessage = await _httpClient.PostAsJsonAsync(url, data);
  155. if (responseMessage.StatusCode == HttpStatusCode.OK)
  156. {
  157. string content = await responseMessage.Content.ReadAsStringAsync();
  158. if (!string.IsNullOrEmpty(content))
  159. {
  160. CoreUserInfo coreUserInfo = content.ToObject<CoreUserInfo>();
  161. if (coreUserInfo != null)
  162. {
  163. bool isActivate = !string.IsNullOrWhiteSpace(coreUserInfo.password) || !string.IsNullOrWhiteSpace(coreUserInfo.passwordOld);
  164. CoreUser coreUser = new CoreUser
  165. {
  166. isActivate = isActivate,
  167. id = coreUserInfo.id,
  168. vid = coreUserInfo.vid,
  169. mail = coreUserInfo.mail,
  170. mobile = coreUserInfo.mobile,
  171. name = coreUserInfo.name,
  172. picture = coreUserInfo.picture,
  173. habook = coreUserInfo.habook,
  174. wechat = coreUserInfo.wechat,
  175. facebook = coreUserInfo.facebook,
  176. google = coreUserInfo.google,
  177. ding = coreUserInfo.ding,
  178. apple = coreUserInfo.apple,
  179. };
  180. return coreUser;
  181. }
  182. else
  183. {
  184. return null;
  185. }
  186. }
  187. else {
  188. return null;
  189. }
  190. }
  191. else if (responseMessage.StatusCode == HttpStatusCode.Unauthorized)
  192. {
  193. return null;
  194. }
  195. else
  196. {
  197. return null;
  198. }
  199. }
  200. }
  201. public class TmdidImplicit
  202. {
  203. public string id_token { get; set; }
  204. public string access_token { get; set; }
  205. public string expires_in { get; set; }
  206. public string token_type { get; set; }
  207. }
  208. public class CoreUser
  209. {
  210. public string id { get; set; }
  211. public string vid { get; set; }
  212. public string mail { get; set; }
  213. public string mobile { get; set; }
  214. public string name { get; set; }
  215. public string picture { get; set; }
  216. public string habook { get; set; }
  217. public string wechat { get; set; }
  218. public string facebook { get; set; }
  219. public string google { get; set; }
  220. public string ding { get; set; }
  221. public string apple { get; set; }
  222. public bool isActivate { get; set; }
  223. }
  224. public class CoreUserInfo : CoreUser
  225. {
  226. public string area { get; set; }
  227. public string country { get; set; }
  228. public string type { get; set; }
  229. public string password { get; set; }
  230. public string salt { get; set; }
  231. public string passwordOld { get; set; }
  232. public string saltOld { get; set; }
  233. }
  234. }