使用C#登录MineCraft

时间:2014-10-12 23:45:06

标签: c# login minecraft launcher

我试图为自己和一些朋友创建一个简单的自定义Minecraft发射器。我不需要代码来启动minecraft,只需要登录的实际代码行。例如,据我所知,您曾经能够使用:

    string netResponse = httpGET("https://login.minecraft.net/session?name=<USERNAME>&session=<SESSION ID>" + username + "&password=" + password + "&version=" + clientVer);

我知道不再有https://login.minecraft.net,这意味着此代码无法正常工作。这是我需要继续的所有内容,只有连接登录的地方,以及要包含的变量。谢谢,如果需要任何其他信息,请发表评论。

2 个答案:

答案 0 :(得分:2)

您需要向https://authserver.mojang.com/authenticate发出JSON POST请求,这是我获取访问令牌(您可以用来玩游戏)的方法。

代码:

string ACCESS_TOKEN;
public string GetAccessToken()
{
    return ACCESS_TOKEN;
}
public void ObtainAccessToken(string username, string password)
{
    var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://authserver.mojang.com/authenticate");
    httpWebRequest.ContentType = "application/json";
    httpWebRequest.Method = "POST";

    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
    {
        string json = "{\"agent\":{\"name\":\"Minecraft\",\"version\":1},\"username\":\""+username+"\",\"password\":\""+password+"\",\"clientToken\":\"6c9d237d-8fbf-44ef-b46b-0b8a854bf391\"}";

        streamWriter.Write(json);
        streamWriter.Flush();
        streamWriter.Close();

        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            var result = streamReader.ReadToEnd();
            ACCESS_TOKEN = result;
        }
    }
}

声明这些:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.IO;
using System.Web.Script.Serialization;

如果你还没有,请参考System.Web.Extentions 我用C#winforms进行了测试,它可以工作:)

谢谢,

DMP9

答案 1 :(得分:1)

登录服务器现在是https://authserver.mojang.com/authenticate,它使用JSON格式的信息。

将此格式用于JSON请求:

{"agent": { "name": "Minecraft", "version": 1 }, "username": "example", "password": "hunter2"}

Here是用于登录的完整实现。