using System.Collections; using System.Collections.Generic; using System; using UnityEngine; using UnityEngine.Networking; using Newtonsoft.Json; /* Http控制器-登录 */ public class LoginController : JCUnityLib.Singleton { public IEnumerator LoginNormal(string username, string password, Action callback) { Debug.Log("LoginNormal:"+ username); string url = CommonConfig.gateServerURL + "/gameLogin/loginNormal"; WWWForm form = new WWWForm(); form.AddField("username", username); form.AddField("password", password); form.AddField("serverIndex", CommonConfig.serverIndex); using (UnityWebRequest request = UnityWebRequest.Post(url, form)) { yield return request.SendWebRequest(); RequestResult requestResult = JsonConvert.DeserializeObject(request.downloadHandler.text); if (callback != null) callback(requestResult); } } public IEnumerator LoginByWX(string loginCode, Action callback) { string url = CommonConfig.gateServerURL + "/gameLogin/loginByWX"; WWWForm form = new WWWForm(); form.AddField("loginCode", loginCode); form.AddField("serverIndex", CommonConfig.serverIndex); using (UnityWebRequest request = UnityWebRequest.Post(url, form)) { request.timeout = 10; yield return request.SendWebRequest(); RequestResult requestResult = new RequestResult(); if (request.result == UnityWebRequest.Result.Success) { requestResult = JsonConvert.DeserializeObject(request.downloadHandler.text); } if (callback != null) callback(requestResult); } } public IEnumerator LoginByWX_WithAppID(string loginCode, string appid, Action callback) { string url = CommonConfig.gateServerURL + "/gameLogin/loginAppIDByWX"; WWWForm form = new WWWForm(); form.AddField("loginCode", loginCode); form.AddField("serverIndex", CommonConfig.serverIndex); form.AddField("appid", appid); using (UnityWebRequest request = UnityWebRequest.Post(url, form)) { request.timeout = 10; yield return request.SendWebRequest(); RequestResult requestResult = new RequestResult(); if (request.result == UnityWebRequest.Result.Success) { requestResult = JsonConvert.DeserializeObject(request.downloadHandler.text); } if (callback != null) callback(requestResult); } } public IEnumerator LoginByApple(string identityToken, string email, string fullName, Action callback) { string url = CommonConfig.gateServerURL + "/gameLogin/loginByApple"; WWWForm form = new WWWForm(); form.AddField("identityToken", identityToken); form.AddField("email", email); form.AddField("fullName", fullName); form.AddField("serverIndex", CommonConfig.serverIndex); using (UnityWebRequest request = UnityWebRequest.Post(url, form)) { request.timeout = 10; yield return request.SendWebRequest(); RequestResult requestResult = new RequestResult(); if (request.result == UnityWebRequest.Result.Success) { requestResult = JsonConvert.DeserializeObject(request.downloadHandler.text); } if (callback != null) callback(requestResult); } } public IEnumerator DdeleteUserByApple(string identityToken, Action callback) { string url = CommonConfig.gateServerURL + "/gameLogin/deleteUserByApple"; WWWForm form = new WWWForm(); form.AddField("identityToken", identityToken); form.AddField("serverIndex", CommonConfig.serverIndex); using (UnityWebRequest request = UnityWebRequest.Post(url, form)) { request.timeout = 10; yield return request.SendWebRequest(); RequestResult requestResult = new RequestResult(); if (request.result == UnityWebRequest.Result.Success) { requestResult = JsonConvert.DeserializeObject(request.downloadHandler.text); } if (callback != null) callback(requestResult); } } public IEnumerator Register(string username, string password, Action callback) { string url = CommonConfig.gateServerURL + "/gameLogin/register"; WWWForm form = new WWWForm(); form.AddField("username", username); form.AddField("password", password); form.AddField("serverIndex", CommonConfig.serverIndex); using (UnityWebRequest request = UnityWebRequest.Post(url, form)) { yield return request.SendWebRequest(); RequestResult requestResult = JsonConvert.DeserializeObject(request.downloadHandler.text); if (callback != null) callback(requestResult); } } public IEnumerator Register2(string username, string password, string email, string phone, Action callback) { string url = CommonConfig.gateServerURL + "/gameLogin/register2"; WWWForm form = new WWWForm(); form.AddField("username", username); form.AddField("password", password); form.AddField("email", email); form.AddField("phone", phone); form.AddField("serverIndex", CommonConfig.serverIndex); using (UnityWebRequest request = UnityWebRequest.Post(url, form)) { yield return request.SendWebRequest(); RequestResult requestResult = JsonConvert.DeserializeObject(request.downloadHandler.text); if (callback != null) callback(requestResult); } } public IEnumerator CompleteUserInfo( string username, string password, string nickname, int gender, string birthday, string countryCode, string stateCode, string cityCode, Action callback ) { string url = CommonConfig.gateServerURL + "/gameLogin/completeUserInfo"; WWWForm form = new WWWForm(); form.AddField("username", username); form.AddField("password", password); form.AddField("nickname", nickname); form.AddField("gender", gender); form.AddField("birthday", birthday); form.AddField("countryCode", countryCode); form.AddField("stateCode", stateCode); form.AddField("cityCode", cityCode); using (UnityWebRequest request = UnityWebRequest.Post(url, form)) { yield return request.SendWebRequest(); RequestResult requestResult = JsonConvert.DeserializeObject(request.downloadHandler.text); if (callback != null) callback(requestResult); } } public IEnumerator LoginByPhone(string phone, Action callback) { string url = CommonConfig.gateServerURL + "/gameLogin/loginByPhone"; WWWForm form = new WWWForm(); form.AddField("phone", phone); using (UnityWebRequest request = UnityWebRequest.Post(url, form)) { yield return request.SendWebRequest(); RequestResult requestResult = JsonConvert.DeserializeObject(request.downloadHandler.text); if (callback != null) callback(requestResult); } } public IEnumerator LoginByToken(Action callback) { string url = CommonConfig.gateServerURL + "/gameLogin/loginByToken"; WWWForm form = new WWWForm(); form.AddField("token", PlayerPrefs.GetString(LoginMgr.LoginTokenKey)); form.AddField("sceneName", UnityEngine.SceneManagement.SceneManager.GetActiveScene().name); form.AddField("serverIndex", CommonConfig.serverIndex); using (UnityWebRequest request = UnityWebRequest.Post(url, form)) { request.timeout = 10; yield return request.SendWebRequest(); RequestResult requestResult; if (request.result == UnityWebRequest.Result.Success) requestResult = JsonConvert.DeserializeObject(request.downloadHandler.text); else { requestResult = new RequestResult(); Debug.LogError("LoginByToken Request Fail: " + request.result); } if (callback != null) callback(requestResult); } } public IEnumerator GetUserInfo(Action callback) { string url = CommonConfig.gateServerURL + "/gameLogin/getUserInfo"; WWWForm form = new WWWForm(); form.AddField("token", PlayerPrefs.GetString(LoginMgr.LoginTokenKey)); using (UnityWebRequest request = UnityWebRequest.Post(url, form)) { request.timeout = 10; yield return request.SendWebRequest(); RequestResult requestResult; if (request.result == UnityWebRequest.Result.Success) requestResult = JsonConvert.DeserializeObject(request.downloadHandler.text); else { requestResult = new RequestResult(); } if (callback != null) callback(requestResult); } } public IEnumerator ListUsernamesByEmail(string email, long timestamp, string sign, Action callback) { string url = CommonConfig.gateServerURL + "/gameLogin/listUsernamesByEmail"; WWWForm form = new WWWForm(); form.AddField("email", email); form.AddField("timestamp", timestamp.ToString()); form.AddField("sign", sign); using (UnityWebRequest request = UnityWebRequest.Post(url, form)) { yield return request.SendWebRequest(); RequestResult requestResult = JsonConvert.DeserializeObject(request.downloadHandler.text); if (callback != null) callback(requestResult); } } public IEnumerator ListUsernamesByPhone(string phone, long timestamp, string sign, Action callback) { string url = CommonConfig.gateServerURL + "/gameLogin/listUsernamesByPhone"; WWWForm form = new WWWForm(); form.AddField("phone", phone); form.AddField("timestamp", timestamp.ToString()); form.AddField("sign", sign); using (UnityWebRequest request = UnityWebRequest.Post(url, form)) { yield return request.SendWebRequest(); RequestResult requestResult = JsonConvert.DeserializeObject(request.downloadHandler.text); if (callback != null) callback(requestResult); } } public IEnumerator ResetPassword(string sign, long timestamp, string username, string password, Action callback) { string url = CommonConfig.gateServerURL + "/gameLogin/resetPassword"; WWWForm form = new WWWForm(); form.AddField("sign", sign); form.AddField("timestamp", timestamp.ToString()); form.AddField("username", username); form.AddField("password", password); using (UnityWebRequest request = UnityWebRequest.Post(url, form)) { yield return request.SendWebRequest(); RequestResult requestResult = JsonConvert.DeserializeObject(request.downloadHandler.text); if (callback != null) callback(requestResult); } } /// /// 上传排行榜分数(定制) /// /// 密钥 /// 任务类型 /// 难度 /// 模式 /// 设备类型 /// 分数(>=0) /// 回调 public IEnumerator UploadCustomLeaderboardScore(string secret, int taskId, int difficultType, int modeType, int deviceType, int score, Action callback) { string loginToken = PlayerPrefs.GetString(LoginMgr.LoginTokenKey); if (string.IsNullOrEmpty(loginToken)) { callback?.Invoke(new RequestResult { msg = "尚未登录" }); yield break; } if (score < 0) { callback?.Invoke(new RequestResult { msg = "分数不能小于0" }); yield break; } string url = $"{CommonConfig.gateServerURL}/SmartBowSDK/UploadCustomLeaderboardScore"; WWWForm form = new WWWForm(); form.AddField("token", loginToken); form.AddField("tokenType", "client"); form.AddField("secret", secret); form.AddField("taskId", taskId); form.AddField("difficultType", difficultType); form.AddField("modeType", modeType); form.AddField("deviceType", deviceType); form.AddField("score", score); yield return PostRequest(url, form, callback); } /// /// 获取排行榜(自定义) /// /// 密钥 /// 任务类型 /// 难度 /// 模式 /// 设备类型 /// 时间维度 /// 回调 public IEnumerator GetCustomLeaderboard(string secret, int taskId, int difficultType, int modeType, int deviceType, int timeType, Action callback) { string loginToken = PlayerPrefs.GetString(LoginMgr.LoginTokenKey); if (loginToken == null) { callback?.Invoke(new RequestResult { msg = "尚未登录" }); yield break; } string url = $"{CommonConfig.gateServerURL}/SmartBowSDK/GetCustomLeaderboard"; WWWForm form = new WWWForm(); form.AddField("token", loginToken); form.AddField("tokenType", "client"); form.AddField("secret", secret); form.AddField("taskId", taskId); form.AddField("difficultType", difficultType); form.AddField("modeType", modeType); form.AddField("deviceType", deviceType); form.AddField("timeType", timeType); yield return PostRequest(url, form, callback); } private IEnumerator PostRequest(string url, WWWForm form, Action callback) { using (UnityWebRequest request = UnityWebRequest.Post(url, form)) { yield return request.SendWebRequest(); if (request.result == UnityWebRequest.Result.Success) callback?.Invoke(JsonConvert.DeserializeObject(request.downloadHandler.text)); else callback?.Invoke(new RequestResult { msg = "网络请求失败: " + request.error }); } } } public class RequestResult { public int code = -9999; public object data; public string msg; }