Swiftyinsta: Fragen Sie nach Anmeldedaten.code

Erstellt am 9. Okt. 2019  ·  19Kommentare  ·  Quelle: TheM4hd1/SwiftyInsta

Hallo,
Bitte sag mir. Ich habe ein Problem.

Bei Anfrage in func login erhalte ich eine SMS mit dem Code, den ich in Credentials.code = "121332" eingetragen habe.
Ich kann diesen Code nicht zurücksenden. Wie es geht? Was mache ich falsch?

Das ist mein Code

Klasse ViewController: UIViewController {

let handler = APIHandler()    
override func viewDidLoad() {
    super.viewDidLoad()
    login()
}

func login() {
    var credentials = Credentials(username: "username", password: "password", verifyBy: .text)
    credentials.code = "121332"

    handler.authenticate(with: .user(credentials)) { [weak self] in
        switch $0 {
        case .success(let response, _):
            print("Login successful.")
            guard let key = response.persist() else { return print("`Authentication.Response` could not be persisted.") }
            UserDefaults.standard.set(key, forKey: "current.account")
            UserDefaults.standard.synchronize()

            self?.getCurrentUser()
        case .failure(let error):
            if error.requiresInstagramCode {
            } else {
            }
        }
    }
}

func getCurrentUser() {
    self.handler.users.user(.me) { ( result: Result<User?, Error>) in
        switch result {
        case .success(let user):
            let username = user?.name ?? "John Doe"
            print("success, username: \(username)")
        case .failure(let error):
            print("failure, error: \(error.localizedDescription)")
        }
    }
}

}

bug help wanted

Hilfreichster Kommentar

Tut mir leid, dass ich es noch nicht geschafft habe, ein Beispiel zu posten, ich war sehr beschäftigt.
Ich hoffe, ich kann bald einen posten.

Alle 19 Kommentare

Sie müssen credentials.code = "121332" nachdem der Authentifizierungshandler .failure(let error) zurückgibt.
Es könnte eine gute Option sein, es innerhalb von if error.requiresInstagramCode { } asynchron zu machen.

Problem besteht weiterhin
https://prnt.sc/pgyf15
sendet diesen Code anscheinend nicht

Versuchen Sie es ohne den Haltepunkt. Auf diese Weise stoppen Sie den Code tatsächlich, wenn er diese Zeile erreicht, sodass keine Anforderung weitergegeben werden kann, wenn sich credentials.code ändert. :erröten:
Wenn es immer noch nichts ändert, versuchen Sie auch, credentials beizubehalten (obwohl dies kein Problem sein sollte, wie ich aus Ihrem Snippet sehen kann, tbh).

https://prnt.sc/pgynah
Problem besteht immer noch. Ich möchte Sie darauf aufmerksam machen, dass ich die Anmeldeinformationen an .user weitergebe, denn wenn es .credentials gibt (wie im Beispiel), tritt ein Fehler auf

.user ist der richtige Weg.
.credentials wurde in development und ich habe vergessen, es zu ändern. Danke für den Hinweis. Ich werde es gleich ändern.
Ich bekomme den Fehler immer noch nicht, weil ich es auf meine Weise teste und alles funktioniert wie beabsichtigt

Da ich es in Ihrem letzten Screenshot nicht sehen kann, funktioniert es wirklich nicht, wenn Sie credentials diese Weise beibehalten und dann code aktualisieren, nachdem die Error die es erfordern ?
Denn das scheint das einzige zu sein, was du anders machst, tbh

Wenn ich .credentials verwende, habe ich diesen Fehler https://prnt.sc/pgyvlx
Ich habe meinen gesamten Code in der Hauptnachricht gepostet.
Mache ich etwas falsch?

Wie testet man das Zurücksenden einer Nachricht?

.user ist das richtige, .credentials wurde aus Versehen in der Dokumentation aufbewahrt.
Verschieben Sie Ihre Erklärung von credentials unter die von handler . Als "einbehaltenes" Eigentum.
Dann sollte es funktionieren.

let handler = APIHandler()
let credentials = Credentials( … )

func login() {
  …
}

Es ist alles Code, es ist sowieso ein Fehler (

UIKit importieren
SwiftyInsta importieren

Klasse ViewController: UIViewController {
let-Handler = APIHandler()
var Credentials = Credentials(Benutzername: "Benutzername", Passwort: "Passwort", VerifyBy: .text)

override func viewDidLoad() {
    super.viewDidLoad()
    login()
}

func login() {

    handler.authenticate(with: .user(credentials)) { [weak self] in
        switch $0 {
        case .success(let response, _):
            print("Login successful.")
            guard let key = response.persist() else { return print("`Authentication.Response` could not be persisted.") }
            UserDefaults.standard.set(key, forKey: "current.account")
            UserDefaults.standard.synchronize()
            self?.getCurrentUser()
        case .failure(let error):
            if error.requiresInstagramCode {
                self!.credentials.code = "178063"
            } else {
            }
        }
    }
}

func getCurrentUser() {
    self.handler.users.user(.me) { ( result: Result<User?, Error>) in
        switch result {
        case .success(let user):
            let username = user?.name ?? "John Doe"
            print("success, username: \(username)")
        case .failure(let error):
            print("failure, error: \(error.localizedDescription)")
        }
    }
}

}

Und was ist diesmal der Fehler? @rmelnik7777

2019-10-09 17:32:25.333892+0300 TestInsta[9747:281440] [] nw_connection_receive_internal_block_invoke [C1] Empfangsantwort fehlgeschlagen mit Fehler "Operation abgebrochen"

https://prnt.sc/pgzldk

Das sieht tatsächlich aus wie eine Art _Xcode_-Warnung, nicht etwas, das SwiftyInsta generiert hat 🤔

Ich habe ein ähnliches Problem. Es ist nicht klar, wie Sie in den Fehlerblock gelangen, um einen Autorisierungscode von SMS zu setzen. Können Sie mit einem Beispiel helfen?

Hallo ich habe auch das gleiche Problem. Können Sie eine funktionierende Beispielanwendung für die Zwei-Faktor-Authentifizierung teilen?

@sbertix wird bald ein klares Beispiel posten.
Sei geduldig.

Tut mir leid, dass ich es noch nicht geschafft habe, ein Beispiel zu posten, ich war sehr beschäftigt.
Ich hoffe, ich kann bald einen posten.

Ich bin ganz neu bei Swift, aber vielleicht habe ich den Fehler gefunden:

  • Hier erstellen Sie eine veränderliche Kopie von user (Instanz von Credentials ) und legen den Wert der Handler-Eigenschaft fest.
  • Aber in dieser Zeile ist es die ursprüngliche Instanz von Credentials , daher ist der Wert der Eigenschaft handler nicht festgelegt. Die Funktion authentification.code() wird nicht aufgerufen.

Ich hatte keine Gelegenheit, es weiter zu untersuchen, aber es könnte genauso gut sein. Anscheinend sind beim aktuellen Commit Credentials als struct und nicht als class deklariert, was die Prämisse der ganzen Sache mit dem Übergeben von Referenzen war.
Es ist anscheinend etwas, das ich entweder auf dem Weg in meiner lokalen Version behoben habe, oder einige Änderungen, die ich auf dem Weg zu master verschoben habe, oder möglicherweise nicht einmal das Problem an sich.
Ich werde versuchen, alles für #96 zu rezensieren, aber ich hatte in letzter Zeit keine Zeit. Entschuldigung.
@Lyusan

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

anonrig picture anonrig  ·  3Kommentare

sbertix picture sbertix  ·  8Kommentare

canaksoy picture canaksoy  ·  6Kommentare

effecttwins picture effecttwins  ·  16Kommentare

sbertix picture sbertix  ·  3Kommentare