InstaSharper - Challenge is required

  • C#

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von DeepForce.

    InstaSharper - Challenge is required

    Hallo,

    ich weiß nicht ob es das richtige Unterforum hier ist, zu not kann es ja jemand verschieben.
    Und zwar möchte ich gerne einen Instagram Bot schreiben und nutze dafür die API InstaSharper. Im Prinzip funktioniert mein Code, jedoch hat Instagram einen Schutz drin, welchen man bestätigen muss wenn sich jemand über ein anderes Gerät anmeldet. Also gibt der loginrequest zurück, dass ich eben das bestätigen soll. Ich bekomme ebenfalls eine Mail von Instagram, dass sich jemand versucht einzuloggen, also funktionieren tut es. Wenn ich diese bestätige und das Programm nochmal debugge passiert genau das selbe und Instagram denkt, es wäre wieder ein anderes Gerät. Ich bin mit dem Visual Studio Debug Prozess nicht sehr vertraut aber ich dachte mir, dass vielleicht immer eine neue Virtuelle Umgebung generiert wird sobald ich das Programm neu debugge. Also habe ich meinen Code etwas geändert, sodass ich den login request im Programm nochmal aufrufen kann, ich denke das seht ihr im Code.

    Aber am Ende denkt Instagram bei jeden Login versuch, dass es ein anderes Gerät wäre. Hat jemand eine Idee?

    C#-Quellcode

    1. using InstaSharper.API;
    2. using InstaSharper.API.Builder;
    3. using InstaSharper.Classes;
    4. using InstaSharper.Logger;
    5. using System;
    6. namespace Insta {
    7. class Program {
    8. private static UserSessionData user;
    9. private static IInstaApi api;
    10. private const string username = "***";
    11. private const string password = "***";
    12. static async void Main(string[] args) {
    13. string console;
    14. user = new UserSessionData();
    15. user.UserName = username;
    16. user.Password = password;
    17. api = InstaApiBuilder.CreateBuilder()
    18. .SetUser(user).UseLogger(new DebugLogger(LogLevel.Exceptions))
    19. .SetRequestDelay(RequestDelay.FromSeconds(1, 3))
    20. .Build();
    21. var loginRequest = await api.LoginAsync();
    22. while (true)
    23. {
    24. console = Console.ReadLine();
    25. if (console.Equals("login"))
    26. {
    27. if (loginRequest.Succeeded)
    28. {
    29. Console.WriteLine("Logged in");
    30. }
    31. else
    32. {
    33. Console.WriteLine(loginRequest.Info.Message);
    34. }
    35. }
    36. }
    37. }
    38. }
    39. }


    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    okay, nun habe ich ein neues Problem. Undzwar wird mir gesagt, dass mein Programm keine geeignete Main Methode enthält.
    Es liegt wohl an den async modifier aber in meinem obrigen Code hatte ich das Problem nicht...

    C#-Quellcode

    1. static async void Main(string[] args)
    2. {
    3. user = new UserSessionData();
    4. user.UserName = username;
    5. user.Password = password;
    6. api = InstaApiBuilder.CreateBuilder().SetUser(user).Build();
    7. var loginRequest = await api.LoginAsync();
    8. if(loginRequest.Succeeded)
    9. {
    10. Console.WriteLine("login");
    11. } else
    12. {
    13. Console.WriteLine(loginRequest.Info.Message);
    14. }
    15. Console.Read();
    16. }

    Das geht erst ab C#7.1, dass man eine Main-Methode async kennzeichnen kann.
    Ein möglicher Workaround:

    C#-Quellcode

    1. ​static void Main(string[] args)
    2. {
    3. Task.Run(async () =>
    4. {
    5. // Dein Code
    6. }).GetAwaiter().GetResult();
    7. }


    Edit: Ist vielleicht nicht die Best-Pratice, da diese Methode eigentlich nur durch den Compiler benutzt werden sollte, aber in dem Fall halte ich es für akzeptabel.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Achso, das habe ich gar nicht gesehen. Das ist tatsächlich seltsam. Aber dann scheinst Du ja bereits C# >= 7.1 zu nutzen. Sicher, dass es nicht aus irgendeinem anderen Grund zu diesem Fehler kam?
    Irgendetwas anderes verändert? Denn das sollte dann trotzdem noch gehen.

    Eine Umstellung der Sprachversion über NuGet ist m.W.n. nicht möglich/erlaubt. Kannst aber ja mal in den erweiterten Buildeinstellungen nachsehen, welche Version ausgewählt ist: codeproject.com/Tips/865579/Ho…harp-version-in-Visual-St

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: