首先给大家说下,LollipopGo架构示意图,如下:
本节主要调试登录,客户端链接登录服务器,目前已经测试完成,并且成功拿点登录服务器的token数据,如下图:
代码如下:
package login
import (
impl "LollipopGo/network"
"encoding/base64"
"encoding/json"
"gamepad/_config"
twlib_user "github.com/Golangltd/Twlib/user"
"github.com/golang/glog"
)
// 数据{"app" :"tank" ,"flag" :"Facebook"data":"id: "Guest 824859","name\":\"Guest_824859\",\"gender\":\"\"\”email\" :\"\" ,\"picture\" :\"\" ,\"avatar\" :\"\"}"
// {"app" :"tank" ,"flag" :"Facebook","data":{"id": "Guest 824859","name":"Guest_824859","gender":"","email" :"","picture":"","avatar":""}}"
// 登录的结构
type LoginST struct {
App string `json:"app"`
Flag string `json:"flag"`
Data Player `json:"data"`
}
type Player struct {
Id string `json:"id"`
Name string `json:"name"`
Gender string `json:"gender"`
Email string `json:"email"`
Picture string `json:"picture"`
Avatar string `json:"avatar"`
}
type LoginData struct {
Token string
Url string
ServerList []*twlib_user.ServerList
AesKey string
}
// 请求登录服务器
func Login(id, loginname string) bool {
urldatast := LoginST{
App: "tank",
Flag: "Facebook",
Data: Player{
Id: id,
Name: loginname,
},
}
urldatastr, _ := json.Marshal(urldatast.Data)
url := ""
if _config.IsProd {
url = _config.ProUrl + "app=" + urldatast.App + "&flag=" + urldatast.Flag + "&data=" + string(urldatastr)
} else {
url = _config.TestUrl + "app=" + urldatast.App + "&flag=" + urldatast.Flag + "&data=" + string(urldatastr)
}
glog.Info("-------------------登录发送数据:", "app="+urldatast.App+"&flag="+urldatast.Flag+"&data="+string(urldatastr))
returndata := impl.Get(url)
glog.Info("-------------------登录数据返回:", returndata)
//-----------------------------------------------------------------------------------------------------------------
base64Str := returndata[1 : len(returndata)-1] //"SGVsbG8gV29ybGQh"
decodedBytes := make([]byte, base64.StdEncoding.DecodedLen(len(base64Str)))
n, err := base64.StdEncoding.Decode(decodedBytes, []byte(base64Str))
if err != nil {
glog.Info("解码错误:", err)
return false
}
// 打印解码后的字符串
//------------------------------------------------------------------------------------------------------------------
// 解码
var playerData LoginData
err = json.Unmarshal(decodedBytes[:n], &playerData)
if err != nil {
glog.Info("Error:", err)
return false
}
glog.Info("解析后的Token数据:", playerData.Token)
//------------------------------------------------------------------------------------------------------------------
// 存储数据到本地数据
//------------------------------------------------------------------------------------------------------------------
return true
}
本节就暂时到这里,明天继续EbitEngine编程。代码比较简单,不明白的可以留言。