using System; using UnityEngine; using UnityEngine.Networking; using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; /* 使用login token进行登录和数据读取保存 * TestDataInjection 是测试用的假数据注入 * LoginTokenCheck 验证login token是否有效,和服务器比对 */ public class LoginTokenController : MonoBehaviour { // Start is called once before the first execution of Update after the MonoBehaviour is created void Start() { TestDataInjection(); StartCoroutine(LoginTokenCheck()); } // Update is called once per frame //void Update() //{ //} // todo 删除。测试假数据注入 void TestDataInjection() { PlayerPrefs.SetString("LoginToken", "TestLoginToken"); DateTime now = DateTime.Now; DateTime oneHourAgo = now.AddHours(-1); PlayerPrefs.SetString("LoginTokenTime", oneHourAgo.ToString()); } // LoginToken登录方法 IEnumerator LoginTokenCheck() { //yield return null; // 跳过第一帧(可以考虑去掉,数据加载已经移到awake()了。 string UUID = SystemInfo.deviceUniqueIdentifier; // 这里需要考虑这段代码执行在Enviroment Controller之前 string LoginToken = PlayerPrefs.GetString("LoginToken", null); string LoginTokenTime = PlayerPrefs.GetString("LoginTokenTime", null); // todo 比较LoginTokenTime 如果超时直接放弃后面代码。比较UUID是否是null如果是直接放弃后面代码 if (LoginToken == null) { yield break; }; if (LoginTokenTime == null) { yield break; }; DateTime tokenTime; DateTime now = DateTime.Now; if (DateTime.TryParse(LoginTokenTime, out tokenTime)) { TimeSpan span = now - tokenTime; if (span.TotalHours > 7 * 24) { yield break; } } else { yield break; } // 提交POST string url = "https://" + EnviromentSetting.serverIp + "/api/login/token/"; WWWForm form = new(); form.AddField("login_token", LoginToken); form.AddField("UUID", UUID); //List> fields = form.fields; using UnityWebRequest request = UnityWebRequest.Post(url, form); { yield return request.SendWebRequest(); if (request.result == UnityWebRequest.Result.Success) { Debug.Log("POST Success: " + request.downloadHandler.text); } else { Debug.Log("POST Error: " + request.error); } } } }