コード例 #1
0
        private async void FbStart()
        {
            try
            {
                FacebookGrid.Visibility = Visibility.Visible;
                SignInVM.LoadingOn();
                using (var client = new HttpClient())
                {
                    var response = await client.GetAsync(InstaFbHelper.FacebookAddress);

                    if (!response.IsSuccessStatusCode)
                    {
                        FacebookGrid.Visibility = Visibility.Collapsed;
                        SignInVM.LoadingOff();
                        FacebookBlockedMsg.ShowMsg();
                        return;
                    }
                }
            }
            catch
            {
                FacebookGrid.Visibility = Visibility.Collapsed;
                SignInVM.LoadingOff();
                FacebookBlockedMsg.ShowMsg();
                return;
            }
            try
            {
                UserAgentHelper.SetUserAgent("Mozilla/5.0 (Linux; Android 4.4; Nexus 5 Build/_BuildID_) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36");
            }
            catch { }
            try
            {
                DeleteFacebookCookies();
            }
            catch { }
            FacebookGrid.Visibility = Visibility.Visible;
            SignInVM.LoadingOn();
            await Task.Delay(1500);

            var facebookLogin = InstaFbHelper.GetFacebookLoginUri();

            FacebookWebView.Navigate(facebookLogin);
        }
コード例 #2
0
ファイル: Form1.cs プロジェクト: xuan2261/InstagramApiSharp
        private async void FacebookWebBrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs args)
        {
            try
            {
                var html = FacebookWebBrowser.DocumentText;
                if (InstaFbHelper.IsLoggedIn(html))
                {
                    var cookies = GetUriCookies(args.Url);
                    var fbToken = InstaFbHelper.GetAccessToken(html);

                    InstaApi = BuildApi();
                    Text     = $"{AppName} Connecting";
                    var loginResult = await InstaApi.LoginWithFacebookAsync(fbToken, cookies);

                    if (loginResult.Succeeded)
                    {
                        Text = $"{AppName} Connected";
                        GetFeedButton.Visible = true;
                        SaveSession();
                    }
                    else
                    {
                        switch (loginResult.Value)
                        {
                        case InstaLoginResult.BadPassword:
                            MessageBox.Show("Wrong Password");
                            break;

                        case InstaLoginResult.ChallengeRequired:
                        case InstaLoginResult.TwoFactorRequired:
                            MessageBox.Show("You must combine Challenge Example to your project");
                            break;

                        default:
                            MessageBox.Show($"ERR: {loginResult.Value}\r\n{loginResult.Info.Message}");
                            break;
                        }
                        Text = $"{AppName} ERROR";
                    }
                }
            }
            catch { }
        }
コード例 #3
0
ファイル: Form1.cs プロジェクト: xuan2261/InstagramApiSharp
        private async void FacebookLoginButton_Click(object sender, EventArgs e)
        {
            await Task.Delay(1500);

            // visible fb web browser
            FacebookWebBrowser.Visible = true;
            // suppress script errors
            FacebookWebBrowser.ScriptErrorsSuppressed = true;
            try
            {
                // remove handler
                FacebookWebBrowser.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(FacebookWebBrowserDocumentCompleted);
            }
            catch { }
            // add handler
            FacebookWebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(FacebookWebBrowserDocumentCompleted);

            // Every time we want to login with another facebook account, we need to clear
            // all cached and cookies for facebook addresses.
            // WebBrowser control uses Internet Explorer so we need to clean up.
            WebBrowserHelper.ClearForSpecificUrl(InstaFbHelper.FacebookAddressWithWWWAddress.ToString());
            WebBrowserHelper.ClearForSpecificUrl(InstaFbHelper.FacebookAddress.ToString());
            WebBrowserHelper.ClearForSpecificUrl(InstaFbHelper.FacebookMobileAddress.ToString());

            // wait 3.5 second
            System.Threading.Thread.Sleep(3500);

            var facebookLoginUri = InstaFbHelper.GetFacebookLoginUri();
            var userAgent        = InstaFbHelper.GetFacebookUserAgent();

            FacebookWebBrowser.Navigate(facebookLoginUri, null, null, string.Format("\r\nUser-Agent: {0}\r\n", userAgent));

            do
            {
                Application.DoEvents();
                System.Threading.Thread.Sleep(1);
            }while (FacebookWebBrowser.ReadyState != WebBrowserReadyState.Complete);
        }
コード例 #4
0
        private async void WebViewFacebookDOMContentLoaded(WebView sender, WebViewDOMContentLoadedEventArgs args)
        {
            try
            {
                SignInVM.LoadingOff();
                try
                {
                    string html = await FacebookWebView.InvokeScriptAsync("eval", new string[] { "document.documentElement.outerHTML;" });

                    if (InstaFbHelper.IsLoggedIn(html))
                    {
                        var cookies   = GetBrowserCookie(args.Uri);
                        var sbCookies = new StringBuilder();
                        foreach (var item in cookies)
                        {
                            sbCookies.Append($"{item.Name}={item.Value}; ");
                        }

                        var fbToken = InstaFbHelper.GetAccessToken(html);

                        Helper.InstaApiTrash = Helper.BuildApi();
                        await Helper.InstaApiTrash.SendRequestsBeforeLoginAsync();

                        SignInVM.LoadingOn();
                        var loginResult = await Helper.InstaApiTrash.LoginWithFacebookAsync(fbToken, sbCookies.ToString());

                        FacebookGrid.Visibility = Visibility.Collapsed;
                        SignInVM.HandleLogin(loginResult);
                    }
                }
                catch { }
            }
            catch (Exception ex)
            {
                ex.PrintException("WebViewFacebookDOMContentLoaded");
            }
        }