LoginRequest.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. using LitJson;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Net.NetworkInformation;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using UnityEngine.Networking;
  10. using UnityEngine.UI;
  11. using UnityEngine;
  12. namespace Assets
  13. {
  14. public class LoginRequest : MonoBehaviour
  15. {
  16. public static LoginRequest Instance
  17. {
  18. get;private set;
  19. }
  20. /// <summary>
  21. /// 是否验证Token
  22. /// </summary>
  23. public bool isVerify = true;
  24. private void Awake()
  25. {
  26. Instance=this;
  27. }
  28. public async void MacLoginRequest()
  29. {
  30. await UIManager.Instance.ShowUI(WindowID.DlgMacLoading);
  31. StartCoroutine(MacLogin());
  32. }
  33. public void TokenLoginRequest(string account)
  34. {
  35. StartCoroutine(Login(account));
  36. }
  37. /// <summary>
  38. /// Mac登录验证
  39. /// </summary>
  40. /// <returns></returns>
  41. IEnumerator MacLogin()
  42. {
  43. string url = "http://api.starmelody.art/api/Account/MacLogin";
  44. Userdata userInfo = new Userdata();
  45. userInfo.account = "";
  46. userInfo.mac = GetMacAddress();
  47. string json = JsonMapper.ToJson(userInfo);
  48. byte[] postBytes = System.Text.Encoding.Default.GetBytes(json);
  49. UnityWebRequest request = UnityWebRequest.Post(url, UnityWebRequest.kHttpVerbPOST);
  50. request.uploadHandler = new UploadHandlerRaw(postBytes);
  51. request.SetRequestHeader("Content-Type", "application/json");
  52. yield return request.SendWebRequest();
  53. if (request.result == UnityWebRequest.Result.Success)
  54. {
  55. Debug.Log(request.downloadHandler.text);
  56. JsonData data = JsonMapper.ToObject(request.downloadHandler.text);
  57. int code = (int)data["code"];
  58. if (code == 0)
  59. {
  60. StepManager.timeStamp = (long)data["data"];
  61. isVerify = false;
  62. }
  63. else
  64. {
  65. isVerify = true;
  66. }
  67. yield return UIManager.Instance.ShowUI(WindowID.DlgLogin);
  68. }
  69. else
  70. {
  71. Debug.Log("Mac验证请求失败" + request.error);
  72. StepManager.requestCode = 1007;
  73. yield return UIManager.Instance.ShowUI(WindowID.DlgMacLoginFaild);
  74. }
  75. UIManager.Instance.HideUI(WindowID.DlgMacLoading);
  76. }
  77. /// <summary>
  78. /// Mac+Token登录验证
  79. /// </summary>
  80. /// <param name="secretKey">秘钥</param>
  81. /// <returns></returns>
  82. IEnumerator Login(string account)
  83. {
  84. string url = "http://api.starmelody.art/api/Account/Login";
  85. Userdata userInfo = new Userdata();
  86. userInfo.account = account;
  87. userInfo.mac = GetMacAddress();
  88. string json = JsonMapper.ToJson(userInfo);
  89. byte[] postBytes = System.Text.Encoding.Default.GetBytes(json);
  90. UnityWebRequest request = UnityWebRequest.Post(url, UnityWebRequest.kHttpVerbPOST);
  91. request.uploadHandler = new UploadHandlerRaw(postBytes);
  92. request.SetRequestHeader("Content-Type", "application/json");
  93. yield return request.SendWebRequest();
  94. if (request.result == UnityWebRequest.Result.Success)
  95. {
  96. Debug.Log(request.downloadHandler.text);
  97. JsonData data = JsonMapper.ToObject(request.downloadHandler.text);
  98. int code = (int)data["code"];
  99. if (code == 0)
  100. {
  101. StepManager.timeStamp = (long)data["data"];
  102. UIManager.Instance.HideUI(WindowID.DlgLogin);
  103. yield return UIManager.Instance.ShowUI(WindowID.FaceBuildPanel);
  104. }
  105. else
  106. {
  107. StepManager.requestCode = code;
  108. yield return UIManager.Instance.ShowUI(WindowID.DlgLoginFaild);
  109. }
  110. }
  111. else
  112. {
  113. Debug.Log("Mac+Token验证请求失败" + request.error);
  114. //网络连接失败
  115. StepManager.requestCode = 1008;
  116. yield return UIManager.Instance.ShowUI(WindowID.DlgLoginFaild);
  117. }
  118. }
  119. /// <summary>
  120. /// 获取本机Mac地址
  121. /// </summary>
  122. /// <returns></returns>
  123. private string GetMacAddress()
  124. {
  125. #if UNITY_ANDROID
  126. return SystemInfo.deviceUniqueIdentifier;
  127. #else
  128. string physicalAddress = "";
  129. NetworkInterface[] nice = NetworkInterface.GetAllNetworkInterfaces();
  130. foreach (NetworkInterface adaper in nice)
  131. {
  132. if (adaper.Description == "en0")
  133. {
  134. physicalAddress = adaper.GetPhysicalAddress().ToString();
  135. break;
  136. }
  137. else
  138. {
  139. physicalAddress = adaper.GetPhysicalAddress().ToString();
  140. if (physicalAddress != "")
  141. {
  142. break;
  143. };
  144. }
  145. }
  146. Debug.Log("Mac地址:" + physicalAddress);
  147. return physicalAddress;
  148. //return "00E26965E9E4";
  149. #endif
  150. }
  151. }
  152. }