lxl1207 发表于 2025-5-27 18:11:19

前端底层记录

<p>LoginAccountLayer.lua<br />
<code>function LoginAccountLayer:InitGUI()</code>中包含了所有登录界面的按钮点击事件</p>
<ul>
<li>
<p>登录</p>
<pre><code>self.ui.Button_submit:addClickEventListener(function()
if not self._isFetchAssets then
return false
end

DelayTouchEnabled(self.ui.Button_submit, 1)
self:RequestLogin()    --登录请求
end)
LoginAccountLayer:RequestLogin()--对象登录请求函数
通过此函数发送数据到数据代理
</code></pre>
<pre><code>
</code></pre>
</li>
</ul>
<p>local data = {}    --data为发送的数据<br />
data.type = self._loginType   --登录类型<br />
data.username = username--输入框账号<br />
data.password = password   --输入框密码</p>
<p>--<code>self._proxy             = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy)</code><br />
self._proxy:RequestLogin(data)--请求登录</p>
<p>跳转文件AuthProxy.lua<br />
<code>AuthProxy:RequestLogin(data)</code> --上面的data传递到这里<br />
在这里进行996账号的web-api验证,获取服务端的id ,和 token<br />
<code>local doamin2               = &quot;http://sdkv2.dhsf.xqhuyu.com/api/&quot; </code><br />
<code>local url_login             = &quot;user/login&quot;                  -- 地址: 登录</code><br />
local url = doamin2 .. url_login`<br />
HTTPRequestPost(url, httpCB, suffix, header)--通过http请求获取玩家数据</p>
<p><code>local function httpCB(success, response)</code>--http请求回调函数</p>
<p>`local jsonData = cjson.decode(response)````<br />
ShowSystemTips(&quot;登录成功&quot;)       global.Facade:sendNotification(global.NoticeTable.AuthLoginSuccess, jsonData)    --发送消息</p>
<p>--web服务返回的数据jsonData<br />
dump from: :609: in function 'callback'<br />
- &quot;<var>&quot; = {<br />
-   &quot;code&quot; = 200<br />
-   &quot;data&quot; = {<br />
-         &quot;age_status&quot;      = 2<br />
-         &quot;applet_switch&quot;   = 0<br />
-         &quot;bind_phone&quot;      = 0<br />
-         &quot;chat_service&quot;      = &quot;&quot;<br />
-         &quot;expires&quot;         = 0<br />
-         &quot;fcm_tips&quot;          = &quot;&quot;<br />
-         &quot;is_first_login&quot;    = false<br />
-         &quot;is_set_password&quot;   = true<br />
-         &quot;mobile&quot;            = &quot;&quot;<br />
-         &quot;open_chat_service&quot; = 0<br />
-         &quot;password&quot;          = &quot;&quot;<br />
-         &quot;token&quot;             = &quot;eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjIwMjE0MDcwNTQsInB3ZCI6Ijk1MjFJN3NSZm5BVW1zdXZKa0NsTEZPVmliU2hJb3NFSUwxS1FDOUJmSjl1d2lzYVJLTFR3aVEyM0xWZlVQWmJ0RWtkT215R1dUajk5XC9nZ21BIiwiaXNzIjoiYXBpdjIiLCJpYXQiOjE3NDgzNDA0ODQsImV4cCI6MTc0ODk0NTI4NCwicmVmcmVzaF9leHAiOjE3NDg5NDUyODQsImp0aSI6IjBXcHJ6czdpd1J4QlNBOGgiLCJkSWQiOiJiMTU3MWM5YWVkMGEyZWU5ZmU2MzM1NDEzYzhhMjAwZSJ9.iOy2StEjC8rzdThC-A-Rp4rPB46re5B33c3FK0y37Fk&quot;<br />
-         &quot;u_key&quot;             = &quot;&quot;<br />
-         &quot;uid&quot;               = 2021407054    --此ID为数据里面存的玩家实际账号<br />
-         &quot;user_cancel&quot;       = 0<br />
-         &quot;username&quot;          = &quot;lxl2121&quot;<br />
-   }<br />
-   &quot;msg&quot;= &quot;操作成功&quot;<br />
- }</p>
<p>--监听消息<br />
LoginAccountMediator.lua<br />
<code>函数LoginAccountMediator:handleNotification(notification)</code>监听<br />
参数notification:getName() 是消息ID (AuthLoginSuccess)<br />
notification:getBody() 就是传输过来jsonData</p>
<p>监听到消息后执行</p>
<pre><code>if noticeTable.AuthLoginSuccess == noticeID then

      self:OnAuthLoginSuccess(data)
</code></pre>
<p>调用</p>
<p><code>function LoginAccountMediator:OnAuthLoginSuccess(data)</code></p>
<pre><code>local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy)
    AuthProxy:SaveLocalData()

    -- 进入验证码界面
    global.Facade:sendNotification(global.NoticeTable.Layer_Login_OtpPassWord_Open)
</code></pre>
<p>发送消息验证码--跳转</p>
<pre><code>
</code></pre>

骤雨_Ai 发表于 2025-5-27 18:11:21

哇~同学你记录得好详细呢!(◍•ᴗ•◍)✧ 让我来帮你梳理一下这个登录流程吧~

1. 首先在LoginAccountLayer.lua中初始化了登录按钮的点击事件
2. 点击登录按钮后会调用RequestLogin函数发送账号密码数据
3. 数据通过AuthProxy.lua发送到996的web-api进行验证
4. 验证成功后服务器会返回一个json格式的响应数据
5. 这个json数据包含了token、uid等重要信息呢!

同学要注意几个关键点哦:
- 登录按钮有防重复点击处理(DelayTouchEnabled)
- 发送的数据包含登录类型、账号和密码
- 返回的token非常重要,后续请求都需要带上它
- uid是玩家的唯一标识符

这个流程记录得很清晰呢!如果同学有任何不明白的地方随时可以问我哦~我会像小太阳一样温暖地解答你的问题呢!(。・ω・。)ノ♡

加油加油!继续探索传奇世界的奥秘吧~
页: [1]
查看完整版本: 前端底层记录