none
自動登入GMAIL RRS feed

  • 問題

  • 本人剛學C#於是參考了別人網站上的範例做練習

    城市內容如題,程式一開始執行都OK,打完帳密後按登入確盪住不動了

    請問各位高手能幫我改一下並告訴我哪裡錯了〜謝謝

    程式碼如下:

    namespace TEST123
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            public void loading()
            {

                while (!(WebBrowser1.ReadyState == WebBrowserReadyState.Complete))

                    Application.DoEvents();

            }
            public void insertText(string element, string str, ref string result)
            {

                try
                {

                    WebBrowser1.Document.Body.All[element].InnerText = str;

                    //輸入至欄位

                }

                catch
                {

                    status(result);

                    //發生錯誤,輸出至狀態

                }

            }
            public void status(string str)
            {

                ListBox2.Items.Add(str);

                //加入狀態

            }



            //登入程序

            public void login()
            {


                WebBrowser1.Navigate("https://accounts.google.com/ServiceLogin?sacu=1&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F&hl=zh-TW&service=mail");

                //等網頁載完

                loading();

                //到登入網頁

                if (getHtmlUrlAndNavigate("A", "href", "/in/*"))
                {

                    status("---已到登入畫面---");

                }

                else
                {

                    status("Error:沒有登入連結");

                }

                //等網頁載完

                loading();

                //判斷狀況

                if (WebBrowser1.Url.ToString() == "https://accounts.google.com/ServiceLogin?sacu=1&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F&hl=zh-TW&service=mail")
                {

                    status("您已經登入");

                }

                else
                {

                    //輸入帳號

                    insertText("Email", txtId.Text, "Error:找不到帳號欄位");

                    //輸入密碼

                    insertText("password", txtPassword.Text, "Error:找不到密碼欄位");

                    //按[登入]鈕

                    try
                    {

                        WebBrowser1.Document.GetElementById(".save").InvokeMember("click");

                    }

                    catch
                    {

                        status("Error:找不到登入按鈕");

                        return;

                    }

                    status("---已登入---");
                     
                }



            }

            private void insertText(string p, string p_2, string p_3)
            {
                throw new NotImplementedException();
            }



            public void logout()
            {



                WebBrowser1.Navigate("https://accounts.google.com/ServiceLogin?sacu=1&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F&hl=zh-TW&service=mail");

                //等網頁載完

                loading();

                //取得登出連結

                if (getHtmlUrlAndNavigate("A", "href", "/exit/*"))
                {

                    status("---已登出---");

                }

                else
                {

                    status("Error:沒有登出連結");

                }

            }

            private bool getHtmlUrlAndNavigate(string tagName, string attribute, string indexOf)
            {

                foreach (HtmlElement hte in WebBrowser1.Document.All)
                {

                    //如果找到指定的Html元素

                    if (hte.TagName.ToUpper() == tagName)
                    {

                        //擷取相關元素的字串>10(本功能主要在擷取登入登出網址)

                        if (hte.GetAttribute(attribute).IndexOf(indexOf) > 10)
                        {

                            WebBrowser1.Navigate(hte.GetAttribute(attribute));

                            //把擷取到的網址

                            //等網頁載完

                            loading();

                            return true;

                            //成功,回傳true

                        }

                    }

                }

                return false;

                //失敗,回傳False

            }








            private void button1_Click(object sender, EventArgs e)
            {

                login();

                //呼叫函數
            }

            private void button2_Click(object sender, EventArgs e)
            {
                logout();

                //呼叫函數
            }

        }
    }


    • 已編輯 trytrymax 2015年3月11日 下午 01:33
    2015年3月11日 下午 01:30

解答

  • FB 有 API 可以把文章貼到你的塗鴉牆或是網誌。

    http://stackoverflow.com/questions/7307606/how-to-post-to-facebook-page-wall-from-net

    Blog 要看你用的是什麼系統,有沒有 API,看你登入 Gmail,先推測你的 blog 是 Google Blogger,它也有 API。

    https://developers.google.com/blogger/docs/3.0/getting_started


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    • 已標示為解答 trytrymax 2015年3月12日 上午 04:01
    2015年3月11日 下午 11:49
    版主

所有回覆

  • 有 REST API 不用...

    https://developers.google.com/gmail/api/


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2015年3月11日 下午 02:28
    版主
  • 感謝您讓我懂REST API

    我是想嘗試做一個軟體可以自動登入BLOG跟FB

    所以寫看看,所以上述程式碼不需要修改囉?

    2015年3月11日 下午 02:58
  • 問題是你登入後要幹嘛。

    只是做登入其實沒什麼價值...


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2015年3月11日 下午 03:01
    版主
  • 雖然不知道登入有沒有價值 畢竟對寫程式而言我只是個菜鳥...

    簡單的程式對我來說都是新鮮感

    還有登入做好了

    我是有想過要自動發文

    因為常在BLOG跟FB分享日記等 不想那麼麻煩了

    如果可以 能教我如何登入PO文嗎?


    2015年3月11日 下午 03:40
  • FB 有 API 可以把文章貼到你的塗鴉牆或是網誌。

    http://stackoverflow.com/questions/7307606/how-to-post-to-facebook-page-wall-from-net

    Blog 要看你用的是什麼系統,有沒有 API,看你登入 Gmail,先推測你的 blog 是 Google Blogger,它也有 API。

    https://developers.google.com/blogger/docs/3.0/getting_started


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    • 已標示為解答 trytrymax 2015年3月12日 上午 04:01
    2015年3月11日 下午 11:49
    版主
  • 謝謝您我會試看看的
    2015年3月12日 上午 04:01
  • 大型網站多半有做機器人防止功能。

    你舉的 Google / FB 都有這種機制,會防止機器人濫用,所以直接用該網站的 API ,並詳閱其相關說明,否則你的帳號可能會被禁用。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2015年3月12日 下午 02:53