LoginController.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System;
  4. using UnityEngine;
  5. using UnityEngine.Networking;
  6. using Newtonsoft.Json;
  7. /* Http控制器-登录 */
  8. public class LoginController : JCUnityLib.Singleton<LoginController>
  9. {
  10. public IEnumerator LoginNormal(string username, string password, Action<RequestResult> callback) {
  11. Debug.Log("LoginNormal:"+ username);
  12. string url = CommonConfig.gateServerURL + "/gameLogin/loginNormal";
  13. WWWForm form = new WWWForm();
  14. form.AddField("username", username);
  15. form.AddField("password", password);
  16. form.AddField("serverIndex", CommonConfig.serverIndex);
  17. using (UnityWebRequest request = UnityWebRequest.Post(url, form)) {
  18. yield return request.SendWebRequest();
  19. RequestResult requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
  20. if (callback != null) callback(requestResult);
  21. }
  22. }
  23. public IEnumerator LoginByWX(string loginCode, Action<RequestResult> callback) {
  24. string url = CommonConfig.gateServerURL + "/gameLogin/loginByWX";
  25. WWWForm form = new WWWForm();
  26. form.AddField("loginCode", loginCode);
  27. form.AddField("serverIndex", CommonConfig.serverIndex);
  28. using (UnityWebRequest request = UnityWebRequest.Post(url, form)) {
  29. request.timeout = 10;
  30. yield return request.SendWebRequest();
  31. RequestResult requestResult = new RequestResult();
  32. if (request.result == UnityWebRequest.Result.Success) {
  33. requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
  34. }
  35. if (callback != null) callback(requestResult);
  36. }
  37. }
  38. public IEnumerator LoginByWX_WithAppID(string loginCode, string appid, Action<RequestResult> callback)
  39. {
  40. string url = CommonConfig.gateServerURL + "/gameLogin/loginAppIDByWX";
  41. WWWForm form = new WWWForm();
  42. form.AddField("loginCode", loginCode);
  43. form.AddField("serverIndex", CommonConfig.serverIndex);
  44. form.AddField("appid", appid);
  45. using (UnityWebRequest request = UnityWebRequest.Post(url, form))
  46. {
  47. request.timeout = 10;
  48. yield return request.SendWebRequest();
  49. RequestResult requestResult = new RequestResult();
  50. if (request.result == UnityWebRequest.Result.Success)
  51. {
  52. requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
  53. }
  54. if (callback != null) callback(requestResult);
  55. }
  56. }
  57. public IEnumerator LoginByApple(string identityToken, string email, string fullName, Action<RequestResult> callback)
  58. {
  59. string url = CommonConfig.gateServerURL + "/gameLogin/loginByApple";
  60. WWWForm form = new WWWForm();
  61. form.AddField("identityToken", identityToken);
  62. form.AddField("email", email);
  63. form.AddField("fullName", fullName);
  64. form.AddField("serverIndex", CommonConfig.serverIndex);
  65. using (UnityWebRequest request = UnityWebRequest.Post(url, form))
  66. {
  67. request.timeout = 10;
  68. yield return request.SendWebRequest();
  69. RequestResult requestResult = new RequestResult();
  70. if (request.result == UnityWebRequest.Result.Success)
  71. {
  72. requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
  73. }
  74. if (callback != null) callback(requestResult);
  75. }
  76. }
  77. public IEnumerator DdeleteUserByApple(string identityToken, Action<RequestResult> callback)
  78. {
  79. string url = CommonConfig.gateServerURL + "/gameLogin/deleteUserByApple";
  80. WWWForm form = new WWWForm();
  81. form.AddField("identityToken", identityToken);
  82. form.AddField("serverIndex", CommonConfig.serverIndex);
  83. using (UnityWebRequest request = UnityWebRequest.Post(url, form))
  84. {
  85. request.timeout = 10;
  86. yield return request.SendWebRequest();
  87. RequestResult requestResult = new RequestResult();
  88. if (request.result == UnityWebRequest.Result.Success)
  89. {
  90. requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
  91. }
  92. if (callback != null) callback(requestResult);
  93. }
  94. }
  95. public IEnumerator Register(string username, string password, Action<RequestResult> callback) {
  96. string url = CommonConfig.gateServerURL + "/gameLogin/register";
  97. WWWForm form = new WWWForm();
  98. form.AddField("username", username);
  99. form.AddField("password", password);
  100. form.AddField("serverIndex", CommonConfig.serverIndex);
  101. using (UnityWebRequest request = UnityWebRequest.Post(url, form)) {
  102. yield return request.SendWebRequest();
  103. RequestResult requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
  104. if (callback != null) callback(requestResult);
  105. }
  106. }
  107. public IEnumerator Register2(string username, string password, string email, string phone, Action<RequestResult> callback) {
  108. string url = CommonConfig.gateServerURL + "/gameLogin/register2";
  109. WWWForm form = new WWWForm();
  110. form.AddField("username", username);
  111. form.AddField("password", password);
  112. form.AddField("email", email);
  113. form.AddField("phone", phone);
  114. form.AddField("serverIndex", CommonConfig.serverIndex);
  115. using (UnityWebRequest request = UnityWebRequest.Post(url, form)) {
  116. yield return request.SendWebRequest();
  117. RequestResult requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
  118. if (callback != null) callback(requestResult);
  119. }
  120. }
  121. public IEnumerator CompleteUserInfo(
  122. string username, string password,
  123. string nickname, int gender, string birthday,
  124. string countryCode, string stateCode, string cityCode,
  125. Action<RequestResult> callback
  126. ) {
  127. string url = CommonConfig.gateServerURL + "/gameLogin/completeUserInfo";
  128. WWWForm form = new WWWForm();
  129. form.AddField("username", username);
  130. form.AddField("password", password);
  131. form.AddField("nickname", nickname);
  132. form.AddField("gender", gender);
  133. form.AddField("birthday", birthday);
  134. form.AddField("countryCode", countryCode);
  135. form.AddField("stateCode", stateCode);
  136. form.AddField("cityCode", cityCode);
  137. using (UnityWebRequest request = UnityWebRequest.Post(url, form)) {
  138. yield return request.SendWebRequest();
  139. RequestResult requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
  140. if (callback != null) callback(requestResult);
  141. }
  142. }
  143. public IEnumerator LoginByPhone(string phone, Action<RequestResult> callback) {
  144. string url = CommonConfig.gateServerURL + "/gameLogin/loginByPhone";
  145. WWWForm form = new WWWForm();
  146. form.AddField("phone", phone);
  147. using (UnityWebRequest request = UnityWebRequest.Post(url, form)) {
  148. yield return request.SendWebRequest();
  149. RequestResult requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
  150. if (callback != null) callback(requestResult);
  151. }
  152. }
  153. public IEnumerator LoginByToken(Action<RequestResult> callback) {
  154. string url = CommonConfig.gateServerURL + "/gameLogin/loginByToken";
  155. WWWForm form = new WWWForm();
  156. form.AddField("token", PlayerPrefs.GetString(LoginMgr.LoginTokenKey));
  157. form.AddField("sceneName", UnityEngine.SceneManagement.SceneManager.GetActiveScene().name);
  158. form.AddField("serverIndex", CommonConfig.serverIndex);
  159. using (UnityWebRequest request = UnityWebRequest.Post(url, form)) {
  160. request.timeout = 10;
  161. yield return request.SendWebRequest();
  162. RequestResult requestResult;
  163. if (request.result == UnityWebRequest.Result.Success)
  164. requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
  165. else
  166. {
  167. requestResult = new RequestResult();
  168. Debug.LogError("LoginByToken Request Fail: " + request.result);
  169. }
  170. if (callback != null) callback(requestResult);
  171. }
  172. }
  173. public IEnumerator GetUserInfo(Action<RequestResult> callback)
  174. {
  175. string url = CommonConfig.gateServerURL + "/gameLogin/getUserInfo";
  176. WWWForm form = new WWWForm();
  177. form.AddField("token", PlayerPrefs.GetString(LoginMgr.LoginTokenKey));
  178. using (UnityWebRequest request = UnityWebRequest.Post(url, form))
  179. {
  180. request.timeout = 10;
  181. yield return request.SendWebRequest();
  182. RequestResult requestResult;
  183. if (request.result == UnityWebRequest.Result.Success)
  184. requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
  185. else
  186. {
  187. requestResult = new RequestResult();
  188. }
  189. if (callback != null) callback(requestResult);
  190. }
  191. }
  192. /// <summary>
  193. /// 上传自定义头像
  194. /// </summary>
  195. /// <param name="texture"></param>
  196. /// <returns></returns>
  197. public IEnumerator UploadAvatar(Texture2D texture, Action<RequestResult> callback)
  198. {
  199. string url = $"{CommonConfig.gateServerURL}/SmartBowSDK/uploadAvatar";
  200. byte[] imageBytes = texture.EncodeToPNG();
  201. WWWForm form = new WWWForm();
  202. form.AddField("token", PlayerPrefs.GetString(LoginMgr.LoginTokenKey));
  203. form.AddField("tokenType", "client");
  204. form.AddBinaryData("file", imageBytes, "avatar.png", "image/png");
  205. using (UnityWebRequest uwr = UnityWebRequest.Post(url, form))
  206. {
  207. yield return uwr.SendWebRequest();
  208. RequestResult requestResult;
  209. if (uwr.result == UnityWebRequest.Result.Success)
  210. requestResult = JsonConvert.DeserializeObject<RequestResult>(uwr.downloadHandler.text);
  211. else
  212. {
  213. requestResult = new RequestResult();
  214. }
  215. if (callback != null) callback(requestResult);
  216. }
  217. }
  218. public IEnumerator ListUsernamesByEmail(string email, long timestamp, string sign, Action<RequestResult> callback) {
  219. string url = CommonConfig.gateServerURL + "/gameLogin/listUsernamesByEmail";
  220. WWWForm form = new WWWForm();
  221. form.AddField("email", email);
  222. form.AddField("timestamp", timestamp.ToString());
  223. form.AddField("sign", sign);
  224. using (UnityWebRequest request = UnityWebRequest.Post(url, form)) {
  225. yield return request.SendWebRequest();
  226. RequestResult requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
  227. if (callback != null) callback(requestResult);
  228. }
  229. }
  230. public IEnumerator ListUsernamesByPhone(string phone, long timestamp, string sign, Action<RequestResult> callback) {
  231. string url = CommonConfig.gateServerURL + "/gameLogin/listUsernamesByPhone";
  232. WWWForm form = new WWWForm();
  233. form.AddField("phone", phone);
  234. form.AddField("timestamp", timestamp.ToString());
  235. form.AddField("sign", sign);
  236. using (UnityWebRequest request = UnityWebRequest.Post(url, form)) {
  237. yield return request.SendWebRequest();
  238. RequestResult requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
  239. if (callback != null) callback(requestResult);
  240. }
  241. }
  242. public IEnumerator ResetPassword(string sign, long timestamp, string username, string password, Action<RequestResult> callback) {
  243. string url = CommonConfig.gateServerURL + "/gameLogin/resetPassword";
  244. WWWForm form = new WWWForm();
  245. form.AddField("sign", sign);
  246. form.AddField("timestamp", timestamp.ToString());
  247. form.AddField("username", username);
  248. form.AddField("password", password);
  249. using (UnityWebRequest request = UnityWebRequest.Post(url, form)) {
  250. yield return request.SendWebRequest();
  251. RequestResult requestResult = JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text);
  252. if (callback != null) callback(requestResult);
  253. }
  254. }
  255. /// <summary>
  256. /// 上传排行榜分数(定制)
  257. /// </summary>
  258. /// <param name="secret">密钥</param>
  259. /// <param name="taskId">任务类型</param>
  260. /// <param name="difficultType">难度</param>
  261. /// <param name="modeType">模式</param>
  262. /// <param name="deviceType">设备类型</param>
  263. /// <param name="score">分数(>=0)</param>
  264. /// <param name="callback">回调</param>
  265. public IEnumerator UploadCustomLeaderboardScore(string secret, int taskId, int difficultType, int modeType, int deviceType, int score, Action<RequestResult> callback)
  266. {
  267. string loginToken = PlayerPrefs.GetString(LoginMgr.LoginTokenKey);
  268. if (string.IsNullOrEmpty(loginToken))
  269. {
  270. callback?.Invoke(new RequestResult { msg = "尚未登录" });
  271. yield break;
  272. }
  273. if (score < 0)
  274. {
  275. callback?.Invoke(new RequestResult { msg = "分数不能小于0" });
  276. yield break;
  277. }
  278. string url = $"{CommonConfig.gateServerURL}/SmartBowSDK/UploadCustomLeaderboardScore";
  279. WWWForm form = new WWWForm();
  280. form.AddField("token", loginToken);
  281. form.AddField("tokenType", "client");
  282. form.AddField("secret", secret);
  283. form.AddField("taskId", taskId);
  284. form.AddField("difficultType", difficultType);
  285. form.AddField("modeType", modeType);
  286. form.AddField("deviceType", deviceType);
  287. form.AddField("score", score);
  288. yield return PostRequest(url, form, callback);
  289. }
  290. /// <summary>
  291. /// 获取排行榜(自定义)
  292. /// </summary>
  293. /// <param name="secret">密钥</param>
  294. /// <param name="taskId">任务类型</param>
  295. /// <param name="difficultType">难度</param>
  296. /// <param name="modeType">模式</param>
  297. /// <param name="deviceType">设备类型</param>
  298. /// <param name="timeType">时间维度</param>
  299. /// <param name="callback">回调</param>
  300. public IEnumerator GetCustomLeaderboard(string secret, int taskId, int difficultType, int modeType, int deviceType, int timeType, Action<RequestResult> callback)
  301. {
  302. string loginToken = PlayerPrefs.GetString(LoginMgr.LoginTokenKey);
  303. if (loginToken == null)
  304. {
  305. callback?.Invoke(new RequestResult { msg = "尚未登录" });
  306. yield break;
  307. }
  308. string url = $"{CommonConfig.gateServerURL}/SmartBowSDK/GetCustomLeaderboard";
  309. WWWForm form = new WWWForm();
  310. form.AddField("token", loginToken);
  311. form.AddField("tokenType", "client");
  312. form.AddField("secret", secret);
  313. form.AddField("taskId", taskId);
  314. form.AddField("difficultType", difficultType);
  315. form.AddField("modeType", modeType);
  316. form.AddField("deviceType", deviceType);
  317. form.AddField("timeType", timeType);
  318. yield return PostRequest(url, form, callback);
  319. }
  320. private IEnumerator PostRequest(string url, WWWForm form, Action<RequestResult> callback)
  321. {
  322. using (UnityWebRequest request = UnityWebRequest.Post(url, form))
  323. {
  324. yield return request.SendWebRequest();
  325. if (request.result == UnityWebRequest.Result.Success)
  326. callback?.Invoke(JsonConvert.DeserializeObject<RequestResult>(request.downloadHandler.text));
  327. else
  328. callback?.Invoke(new RequestResult { msg = "网络请求失败: " + request.error });
  329. }
  330. }
  331. }
  332. public class RequestResult {
  333. public int code = -9999;
  334. public object data;
  335. public string msg;
  336. }