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.
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.