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