于是我们在Launcher.cs中定义方法:
public LauncherReturn YggLogin(String Email, String Password)
{
WebRequest wr = WebRequest.Create("
https://authserver.mojang.com/authenticate");//创建请求对象
wr.ContentType = "application/json";//定义Content-Type
wr.Method = "post";//定义请求类型
String uls = "{ \"agent\": { \"name\": \"Minecraft\", \"version\": 1 },\"username\": \"" + Email + "\", \"password\": \"" + Password + "\"}";//处理数据
byte[] bs = Encoding.UTF8.GetBytes(uls);//上传数据部分
wr.ContentLength = bs.Length;//上传数据部分
Stream sw = wr.GetRequestStream();//上传数据部分
sw.Write(bs, 0, bs.Length);//上传数据部分
sw.Flush();//上传数据部分
sw.Close();//上传数据部分
LauncherReturn lr = new LauncherReturn();//定义返回量
StreamReader sr = new StreamReader(wr.GetResponse().GetResponseStream());//读取返回数据部分
string rtxt = sr.ReadToEnd();//读取返回数据部分
int tmp = rtxt.IndexOf("accessToken") + "accessToken".Length + 3;//读取json部分
String accessToken = rtxt.Substring(tmp, rtxt.IndexOf("\"", tmp) - tmp);//读取json部分
tmp = rtxt.IndexOf("id") + "id".Length + 3;//读取json部分
String uuid = rtxt.Substring(tmp, rtxt.IndexOf("\"", tmp) - tmp);//读取json部分
tmp = rtxt.IndexOf("name") + "name".Length + 3;//读取json部分
String UserName = rtxt.Substring(tmp, rtxt.IndexOf("\"", tmp) - tmp);//读取json部分
String legacy = "Legacy";//定义Legacy
if(rtxt.IndexOf("legacy")==-1){//如果有说明是Legacy
legacy = "mojang";//设置
}
lr.rtvs = new String[] { UserName, accessToken, uuid ,legacy};//赋值
return lr;//返回
}