Versuchen Sie, sich mit einem neuen registrierten neuen Benutzer anzumelden. Web-Login wird manchmal zufällig nicht abgeschlossen. Instagram zeigt eine andere Seite mit Benutzervorschlägen an. Ich versuche, 1 Benutzer zu folgen, auch 1 Benutzer folgte mir (es zeigt Feed an, funktionierte aber nicht) Meistens wurde die Web-Anmeldung für diesen Benutzer nicht abgeschlossen. Nachdem Sie 2-3 Mal versucht haben, sich anzumelden, funktioniert es möglicherweise.
Wenn Sie neu registriert sagen, meinen Sie das, wenn Sie sich über die Webansicht anmelden oder sich in ein Konto einloggen, das gerade erstellt wurde, aber woanders liegt? @canaksoy
Nur um zu verstehen, wie man es versucht und zu replizieren
In jedem Fall könnte eine direkte Überprüfung auf Cookies anstelle einer bestimmten URL eine Lösung sein (vorausgesetzt, sie sind alle eingestellt, bevor die oben genannte Vorschlagsseite erreicht wird). Ich sende so schnell wie möglich eine Pull-Anfrage.
Überprüfen Sie #76, @canaksoy 💪
Hauptänderung, abgesehen davon, dass nicht wirklich nach instagram.com
gesucht wird, sondern nur nach gültigen Cookies, habe ich den gesamten init
Prozess async
, um die Unterstützung für mehrere Konten nicht zu unterbrechen ( Ich plane, damit in 2.0
richtig umzugehen, entweder ein UIViewController
oder etwas wie ein LoginManager
Erstellen der Webansicht).
Ich warte auf die Genehmigung von @TheM4hd1 , um es tatsächlich zusammenzuführen 😊
Es stellte sich heraus, dass das LoginWebView
auch in dem von @canaksoy oben beschriebenen Fall noch bug
Label für ein help wanted
eins.
Dennoch ist die PR von Vorteil, um das Ganze zukunftssicher zu machen, und sie sollte imho zusammengeführt werden.
Für zukünftige Referenzen... das neue Verhalten ist dieses.
(@mkeshnoda)
class LoginViewController: UIViewController {
var webView: InstagramLoginWebView? {
didSet {
oldValue?.removeFromSuperview()
guard let webView = webView else { return }
// add to view hierarchy (NECESSARY).
view.addSubview(webView)
// always request log in page when setting a new web view.
webView.loadInstagramLogin()
}
}
override func viewDidLoad() {
super.viewDidLoad()
// create a new `InstagramLoginWebView`.
InstagramLoginWebView.create(with: view.bounds,
completionHandler: { _, _ in /* deal with login and failures */ },
returnHandler: { [weak self] in self?.webView = $0 })
}
}
Für zukünftige Referenzen... das neue Verhalten ist dieses.
(@mkeshnoda)class LoginViewController: UIViewController { var webView: InstagramLoginWebView? { didSet { oldValue?.removeFromSuperview() guard let webView = webView else { return } // add to view hierarchy (NECESSARY). view.addSubview(webView) // always request log in page when setting a new web view. webView.loadInstagramLogin() } } override func viewDidLoad() { super.viewDidLoad() // create a new `InstagramLoginWebView`. InstagramLoginWebView.create(with: view.bounds, completionHandler: { _, _ in /* deal with login and failures */ }, returnHandler: { [weak self] in self?.webView = $0 }) } }
Ich habe genau das gleiche gemacht, aber nach dem Einloggen didSuccessfullyLogIn und CompletionHandler funktioniert nicht 😭
Ich habe gerade ein wenig debuggt und festgestellt, dass ich mich wegen filtered.count = 1
nicht anmelden kann. isUserLoggedIn(instagramCookies: [HTTPCookie]?)
erhält nur 2 Kekse
let filtered = cookies.filter {
!$0.value.isEmpty
&& $0.properties?[.init(rawValue: "Created")] as? TimeInterval ?? 0 > startedAt.timeIntervalSinceReferenceDate
&& ($0.name == "ds_user_id" || $0.name == "csrftoken" || $0.name == "sessionid") }
guard filtered.count >= 3 else { return }
Können Sie damit eine neue Ausgabe eröffnen und Ihren Ablauf erklären? @mkeshnoda
Denn leider werden diese 3 Cookies dringend benötigt, also können wir nichts tun, um das Problem zu beheben... sie bedeuten wörtlich "Sie sind eingeloggt".
Und es ist seltsam, denn wenn es vorher funktioniert hat, sollte es jetzt genauso gut funktionieren (es hat bereits nach mindestens 2 von ihnen gesucht). Ich habe mit 4 verschiedenen Konten getestet und sie scheinen alle zu funktionieren.