Swiftyinsta: Problema de inicio de sesión de usuario nuevo

Creado en 7 ago. 2019  ·  6Comentarios  ·  Fuente: TheM4hd1/SwiftyInsta

intente iniciar sesión con un nuevo usuario registrado nuevo. el inicio de sesión web no se completa a veces de forma aleatoria. Instagram muestra una página de sugerencias de usuario diferente. Intento seguir a 1 usuario, también 1 usuario me siguió (muestra el feed pero no funcionó) en su mayoría, el inicio de sesión web no se completó para este usuario. Después de intentar iniciar sesión 2-3 veces, puede funcionar.

  • no 2FA - inicio de sesión directo con contraseña
help wanted

Todos 6 comentarios

Cuando dice recién registrado, ¿quiere decir que sucede al registrarse desde la vista web o al iniciar sesión en una cuenta que se acaba de crear pero en otro lugar? @canaksoy
Solo para entender cómo intentar replicarlo 😊

De cualquier manera, verificar directamente las cookies, en lugar de cualquier URL determinada, podría ser una solución (suponiendo que estén todas configuradas antes de llegar a la página de sugerencias mencionada anteriormente). Estoy enviando una solicitud de extracción lo antes posible.

Compruebe # 76, @canaksoy 💪

Cambio principal, aparte de no verificar realmente instagram.com pero solo para cookies válidas, hice todo el proceso init async , para no romper el soporte de múltiples cuentas ( Planeo lidiar con esto correctamente en 2.0 , ya sea devolviendo un UIViewController o algo así como un LoginManager creando la vista web).

Estoy esperando la aprobación de @ TheM4hd1 para fusionarlo 😊

Resulta que el LoginWebView todavía funcionó incluso en el caso descrito por @canaksoy arriba (ambos lo probé yo mismo y revisé sus capturas de pantalla), así que eliminaré la etiqueta bug para un help wanted uno.
Aún así, el PR es beneficioso para el futuro a prueba de todo, y debería fusionarse en mi humilde opinión.

Para referencia futura ... el nuevo comportamiento es este.
(@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 })
    }
}

Para referencia futura ... el nuevo comportamiento es este.
(@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 })
    }
}

Hice exactamente lo mismo, pero después de iniciar sesión, logré iniciar sesión con controlador de finalización no funciona 😭

Acabo de depurar un poco y descubrí que no puedo iniciar sesión debido a filtered.count = 1 . isUserLoggedIn(instagramCookies: [HTTPCookie]?) recibe solo 2 cookies

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 }

¿Puedes abrir un nuevo problema con él y explicar tu flujo? @mkeshnoda
Porque, lamentablemente, esas 3 cookies son muy necesarias, por lo que no podemos hacer nada para solucionarlo ... literalmente significan "ha iniciado sesión".
Y es extraño porque si funcionó antes, debería funcionar igual de bien ahora (ya verificó al menos 2 de ellos). He probado con 4 cuentas diferentes y todas parecen funcionar.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

biox86 picture biox86  ·  12Comentarios

trentona picture trentona  ·  3Comentarios

anonrig picture anonrig  ·  3Comentarios

sbertix picture sbertix  ·  8Comentarios

sbertix picture sbertix  ·  27Comentarios