新しく登録した新規ユーザーでログインしてみてください。 Webログインがランダムに完了しない場合があります。 Instagramは別のユーザー提案ページを表示します。 私は1人のユーザーをフォローしようとしましたが、1人のユーザーもフォローしました(フィードは表示されますが機能しません)。ほとんどの場合、このユーザーのWebログインは完了していません。 ログインを2〜3回試行した後、機能する場合があります。
新規登録とは、Webビューからサインアップしたとき、または作成したばかりの別の場所にログインしたときに発生するという意味ですか? @canaksoy
それを複製する方法を理解するためだけに😊
いずれにせよ、特定のURLではなく、Cookieを直接チェックすることで、修正できる可能性があります(前述の提案ページに到達する前にすべて設定されていると仮定します)。 できるだけ早くプルリクエストを送信しています。
チェック#76、 @ canaksoy💪
主な変更点は、実際にinstagram.com
チェックするのではなく、有効なCookieだけをチェックすることを除いて、マルチアカウントのサポートを壊さないように、すべてのinit
プロセスをasync
にしました(私はこれを2.0
で適切に処理することを計画しており、 UIViewController
返すか、 LoginManager
ようなものでWebビューを作成します)。
@ TheM4hd1が実際にマージすることを承認するのを待っています😊
結局のところLoginWebView
私は削除していますので、まだの場合にも、働いていたが、(私は両方のそれを自分自身をテストし、彼のスクリーンショットをチェックしました)上@canaksoyによって記述bug
のラベルをhelp wanted
1つ。
それでも、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]?)
は2つのCookieのみを受け取ります
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つの異なるアカウントでテストしましたが、それらはすべて機能しているようです。