private async void FacebookTimerTick(object sender, EventArgs e) { FacebookTimer.Stop(); try { bool first = true; LBLRepeat: var forms = FacebookWebBrowser.Document.Forms; if (forms != null && forms.Count > 0) { foreach (HtmlElement item in forms) { foreach (HtmlElement it in item.All) { var innerHtml = it.InnerHtml; if (FacebookLoginHelper.SecondStep(innerHtml)) { var btn = it.GetElementsByTagName("button"); btn[0].InvokeMember("click"); break; } } } } await Task.Delay(2500); LoadingPanel.Visible = false; await Task.Delay(1500); //sometimes we need to press 2 time if (first) { first = false; goto LBLRepeat; } } catch { await Task.Delay(2500); LoadingPanel.Visible = false; await Task.Delay(1500); } }
private async void FacebookWebBrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs args) { if (FacebookLoginHelper.FirstStep(args.Url)) { if (FacebookFirstTime) { FacebookFirstTime = false; FacebookTimer.Start(); } else { var cookies = GetUriCookies(FacebookLoginHelper.InstagramUriAddress); var html = FacebookWebBrowser.DocumentText; var response = FacebookLoginHelper.GetLoggedInUserResponse(html); if (response != null && response.Config != null && response.Config.Viewer != null) { var username = response.Config.Viewer.Username; // logged in successfully FacebookWebBrowser.Visible = false; // we don't have password so we fill it up with fake password var userSession = new UserSessionData { UserName = username, Password = "******" }; // note: you cannot change password while you logged in with facebook account. // build InstaApi InstaApi = InstaApiBuilder.CreateBuilder() .SetUser(userSession) .UseLogger(new DebugLogger(LogLevel.Exceptions)) .SetRequestDelay(RequestDelay.FromSeconds(0, 1)) .Build(); LoadingPanel.Visible = false; // pass information to InstaApi var result = await InstaApi.SetCookiesAndHtmlForFacebookLogin(response, cookies, true); if (result.Value) { // Save session var state = InstaApi.GetStateDataAsStream(); using (var fileStream = File.Create(StateFile)) { state.Seek(0, SeekOrigin.Begin); state.CopyTo(fileStream); } // save session as json //var str = InstaApi.GetStateDataAsString(); //File.WriteAllText("abc.json", str); // visible get some feed button GetFeedButton.Visible = true; } else { $"An error has occured.".Output(); } } } } }