Swiftyinsta: Novo problema de login de usuário

Criado em 7 ago. 2019  ·  6Comentários  ·  Fonte: TheM4hd1/SwiftyInsta

tente fazer o login com um novo usuário registrado. o login da web não é concluído às vezes de forma aleatória. O Instagram mostra uma página de sugestão de usuário diferente. Tento seguir 1 usuário, também 1 usuário me seguiu (mostra o feed, mas não funcionou), principalmente o login da web não foi concluído para este usuário. Depois de tentar 2 a 3 vezes para fazer o login, pode funcionar.

  • não 2FA - login direto com senha
help wanted

Todos 6 comentários

Quando você diz recém-registrado, quer dizer que isso acontece ao se inscrever a partir da visualização da web ou ao fazer login em uma conta que acabou de ser criada, mas em outro lugar? @canaksoy
Só para entender como tentar e replicá-lo 😊

De qualquer forma, verificar diretamente os cookies, em vez de qualquer url, pode ser uma correção (supondo que estejam todos configurados antes de chegar à página de sugestão mencionada). Estou enviando uma solicitação de pull o mais rápido possível.

Verifique # 76, @canaksoy 💪

Mudança principal, além de não verificar realmente instagram.com mas apenas cookies válidos, fiz todo o processo init async , para não quebrar o suporte a várias contas ( Pretendo lidar com isso de forma adequada em 2.0 , retornando UIViewController ou algo como LoginManager criando a visualização na web).

Estou esperando a aprovação de @ TheM4hd1 para realmente mesclá-lo 😊

Acontece que LoginWebView ainda funcionou mesmo no caso descrito por @canaksoy acima (eu mesmo testei e verifiquei suas capturas de tela), então estou removendo o rótulo bug para um help wanted one.
Ainda assim, o PR é benéfico para a prova futura de tudo e deve ser mesclado imediatamente.

Para referência futura ... o novo comportamento é 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 referência futura ... o novo comportamento é 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 })
    }
}

Fiz exatamente o mesmo, mas após o login didSuccessfullyLogIn e a conclusãoHandler não está funcionando 😭

Apenas fiz uma pequena depuração e descobri que não consigo fazer o login por causa de filtered.count = 1 . isUserLoggedIn(instagramCookies: [HTTPCookie]?) recebe apenas 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 }

Você pode abrir um novo problema com ele e explicar o seu fluxo? @mkeshnoda
Porque infelizmente esses 3 cookies são muito necessários, então não há nada que possamos fazer para corrigir isso ... eles significam literalmente "você está logado".
E é estranho porque se funcionou antes, deve funcionar da mesma forma agora (já foi verificado por pelo menos 2 deles). Eu testei com 4 contas diferentes e todas parecem funcionar.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

reefer picture reefer  ·  18Comentários

anonrig picture anonrig  ·  3Comentários

sbertix picture sbertix  ·  8Comentários

biox86 picture biox86  ·  12Comentários

rmelnik7777 picture rmelnik7777  ·  19Comentários