尝试使用新注册的新用户登录。 网络登录有时会随机未完成。 Instagram 显示了一个不同的用户建议页面。 我尝试关注 1 个用户,也有 1 个用户关注了我(它显示了提要但没有工作),该用户的大部分网络登录都没有完成。 尝试 2-3 次登录后,它可能会起作用。
当您说新注册时,您的意思是在从 Web 视图注册时发生,还是在登录刚刚创建但位于其他地方的帐户时发生这种情况? @canaksoy
只是为了了解如何尝试和复制它😊
无论哪种方式,直接检查 cookie 而不是任何给定的 url,都可能是一个修复(假设它们在到达上述建议页面之前都已设置)。 我正在尽快发送拉取请求。
检查#76, @ canaksoy 💪
主要变化,除了不实际检查instagram.com
而只是检查有效的 cookie,我已经制作了所有init
进程async
,为了不破坏多帐户支持(我计划在2.0
正确处理这个问题,要么返回UIViewController
或类似LoginManager
创建网络视图的东西)。
我正在等待@TheM4hd1的批准以实际合并它😊
原来的LoginWebView
仍然即使在通过上述@canaksoy(我都测试它自己,并检查他的截图)中描述的情况下工作,所以我取出bug
标记为help wanted
一个。
尽管如此,PR 还是有利于未来证明整个事情的,它应该被合并,恕我直言。
供将来参考……新行为是这样的。
(@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 })
}
}
供将来参考……新行为是这样的。
(@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 }) } }
我做了完全一样但登录后didSuccessfullyLogIn和completionHandler不工作😭
只是做了一些调试,发现我无法登录,因为filtered.count = 1
。 isUserLoggedIn(instagramCookies: [HTTPCookie]?)
只
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 }
你能用它打开一个新问题并解释你的流程吗? @mkeshnoda
不幸的是,这 3 个 cookie 非常需要,所以我们无能为力来修复它……它们的字面意思是“您已登录”。
这很奇怪,如果它以前有效,现在应该也能正常工作(它已经检查了至少 2 个)。 我已经用 4 个不同的帐户进行了测试,它们似乎都有效。