Minecraft Authentication | JSON Methode

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von masterboss.

    Minecraft Authentication | JSON Methode

    Hallo Leute ;),
    Ich habe ein kleines Problem und zwar Mojang hat ein neues Login System. Vor einigen Wochen konnte man die Login Daten noch per URL abfragen. Jetzt bekommt man bei der alten Methode nurnoch ein "Bad login". Man muss einen verschlüsselten JSON Payload machen. Meine Frage also, wie man sowas macht?
    Mein derzeitiger Code sieht so aus:

    VB.NET-Quellcode

    1. Private Sub cmdlogin_Click(sender As Object, e As EventArgs) Handles cmdlogin.Click
    2. Dim Username As String = tbusername.Text, Password As String = tbpassword.Text
    3. Dim LoginVersion As Integer = 13
    4. Dim SessionToken As String = "", UUID As String = "", MCName As String = ""
    5. Dim LoginRequest As HttpWebRequest = CType(WebRequest.Create("https://authserver.mojang.com"), _
    6. HttpWebRequest)
    7. LoginRequest.Method = "POST"
    8. LoginRequest.ContentType = "application/json"
    9. End Sub


    Vielen Dank im vorraus ;)
    KaskadekingDE on GitHub :)
    Bitte keine Fragen über Programmierung per PN! Dafür ist das Forum hier.

    Who cares? ¯\_(ツ)_/¯
    Erstelle dir die entsprechenden Klassen, die du für den Login benötigst.
    Beispielsweise für die Authentifizierung:

    VB.NET-Quellcode

    1. <DataContract()> _
    2. Public Class AuthenticateModel
    3. <DataMember(Name = "agent")> _
    4. Public Property Agent As Agent
    5. <DataMember(Name = "username")> _
    6. Public Property Username As String
    7. <DataMember(Name = "password")> _
    8. Public Property Password As String
    9. <DataMember(Name = "clientToken")> _
    10. Public Property ClientToken As String
    11. End Class

    Das kannst du dann über einen System.Runtime.Serialization.Json.DataContractJsonSerializer serialisieren und verschicken.
    Du benötigst also für jede Antwort und jede Abfrage ein Model, was du dann de-/serialisierst und damit weiterarbeitest.
    Danke :)

    Nur sagt mir VB .NET das Json kein Member von System.Runtime.Serialization oder das Json keine öffentliche Member besitzt ist.
    Wie behebe ich das Problem oder gibt es andere Möglichkeiten?
    KaskadekingDE on GitHub :)
    Bitte keine Fragen über Programmierung per PN! Dafür ist das Forum hier.

    Who cares? ¯\_(ツ)_/¯
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    So danke an dich Lukas :)
    Meine benötigten Login-Daten habe ich nun serialisiert. (Hatte zwar ein kleines Problem das er immer bei ser.WriteObject(ms, input) eine InvalidDataContractException auswirft ist aber jetzt behoben ;) ).

    Wie verschicke ich nun die Daten an den Server?

    KaskadekingDE on GitHub :)
    Bitte keine Fragen über Programmierung per PN! Dafür ist das Forum hier.

    Who cares? ¯\_(ツ)_/¯

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „KaskadekingDE“ ()

    Jemand muss doch wissen wie man das macht, oder? ?(
    Ich möchte die serialisierten Objekte an den Server senden per HttpWebRequest.
    Ich kenne mich nicht wirklich mit HTTP oder ähnlichen aus.
    Bei Google hab ich nichts gefunden.

    Ich hab außer dem schon versucht ein Request zusenden bekommt aber als Fehlermeldung "(405) Die Methode ist unzulässig" obwohl ich Request.Type = "POST" gesetzt habe in meinen Code.

    Ich hoffe mir kann noch jemand helfen ;)
    KaskadekingDE on GitHub :)
    Bitte keine Fragen über Programmierung per PN! Dafür ist das Forum hier.

    Who cares? ¯\_(ツ)_/¯
    Versuch's mal so, wie ich's hier beschrieben habe. Bei mir hat das bis jetzt immer hingehauen.
    Und doch: Bei Google findet man schon was. Ich weiss das, weil ich es selbst so gelernt habe(Im Buch, das ich zum Lernen verwende, wurde das gar nie behandelt).
    Danke aber ich bekomme bei

    Quellcode

    1. Dim Response = Await Request.GetResponseAsync()

    wieder eine 405 (Unzulässige Methode) Fehlermeldung.
    Ich habe aber im Code:

    Quellcode

    1. Request.Method = "POST"
    .
    Vielleicht liegt es daran das er den serializierten JSON String nicht akzeptiert?
    ;)
    KaskadekingDE on GitHub :)
    Bitte keine Fragen über Programmierung per PN! Dafür ist das Forum hier.

    Who cares? ¯\_(ツ)_/¯
    Sicher, dass deine Anfrage richtig war? "Von wo" hast du sie nachgebaut? Ich beispielsweise nutze Fiddler2.
    PS: Den Accept-Encoding-Header musst'e leer lassen - gab bei mir da immer wieder mal Probleme.
    Die einzigen Vorraussetzungen für den Request den ich im Forum gefunden habe sind das die Methode ein POST Request sein muss und der ContentType "application/json" entsprechen muss. Das habe ich ja alles in meinen Code gesetzt.

    EDIT: Na gut ich versuche dann mal das Problem in einen eigenen Thread zu lösen. Ich hab ja wenigstens den JSON String den ich brauche aber danke für deine Hilfe ;)
    KaskadekingDE on GitHub :)
    Bitte keine Fragen über Programmierung per PN! Dafür ist das Forum hier.

    Who cares? ¯\_(ツ)_/¯

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „KaskadekingDE“ ()