123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- 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<KeyValuePair<string, string>> 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);
- }
- }
- }
- }
|