質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • JavaScript

    16910questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • C#

    7382questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • jQuery

    6897questions

    jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

  • C

    3801questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • C++

    3567questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

C# POST通信でTwitterにログインする方法について

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 887

fama

score 79

お読み頂きましてありがとうございます。
現在、C#言語を使用し、VisualStudioにてPOST通信(HttpClient)にてTwitterにログインするという処理を実装しております。

twitterParam twiParam = new twitterParam();
            var cookie_container = new CookieContainer();
            using (var handler = new HttpClientHandler()
            {
                CookieContainer = cookie_container
            })

            using (var client = new HttpClient(handler))
            {
                var htmlTwitter = await client.GetStringAsync("https://twitter.com/");
                var regexTokenAdd = new Regex(@"name=""redirect_after_login"" value=.*?value=""(.*?)"".*?name=""ui_metrics_seed"" value=""(.*?)"" autocomplete", RegexOptions.Singleline);//, RegexOptions.Singleline);
                Match regexMatch = regexTokenAdd.Match(htmlTwitter);
                //取得成功
                if (regexMatch.Success)
                {
                    twiParam.tokenGetSet = regexMatch.Groups[1].Value.Trim();
                    twiParam.metricsGetSet = regexMatch.Groups[2].Value.Trim();
                }
                client.DefaultRequestHeaders.Referrer = new Uri("https://twitter.com/signup");

                string myid;
                string mypass;

                string data = ListLogindata[0];
                int pointid = data.IndexOf(",");
                myid = data.Remove(pointid);
                mypass = data.Remove(0, pointid).Replace(",", "");

                string tid = textBox_Target.Text; //指定ID(screen_name)

                var values = new Dictionary<string, string>
                {
                   { "session[username_or_email]", myid },
                   { "session[password]", mypass },
                   { "return_to_ssl",   "true"},
                   { "scribe_log", "" },
                   { "redirect_after_login", "/"},
                   { "authenticity_token",twiParam.tokenGetSet },
                   //毎回値は変わるみたいだが、同じものでもログインは出来る
                   { "ui_metrics","{{\"tt\":26167,\"v\":2,\"gts\":1453481367006,\"h\":\"f289b49e\",\"b\":\"461c4f2c34252a2a36647d136b243b3c29287c627f363f38777a7536292a3f3a6e6c71040d0e41484708172f06050c00083b1f14100616475b121b145b5659322d2d2fd7d3c3d3aac1cacbaaa5a8e5fce1effce4e1f3e0e7bbf2fbf4bbb6b9d2cdcdc8e69290fc9695f997f799f599949b80cbdcdd909f96fbe6e4efff8989e38f8ee0f09ef29cf6f3f1e9aca5a6e9e0efa0bfb3a5a0bffab1babbfa84f6f9ada8b7ad8b92cc97819d92c5d29d989e89c1cc9e8598809887db849295968c9edec78a8d75642e2175706f75637a247969606179755f7d7771372c717975697e303f6d7c5244474d0a46494b475b6e4e5c59460d0a03061f164655455d5c541554585758283560797c73726b6a3a293929282061273836273c776c666d6a6c777e333f29090603170b17480b09070d1e0d0a0b4d4a53181256595419190f131c1d09110daef1eee2f0e3e9f5e5abb0a9dbe4e0bca2b3beb1faf4e0fefff8eef4eeb3eeedcfc5d7c0d0879c85efccc9c0c38f828dc7d8dcd7dbc298dbd7dadbd7efc9d1cda1a6a7e1feb1b4b2ade5e8bca5a3aaa0a7ffa1b6a7a6bfb8b68aaeb4aebcb9bac2db96919180cac59f80848f839ac0869e95978b9191b2b5dac38e89899883\",\"hj\":{{\"rf\":{{\"d721a6e9b5eea58dcbd56774b03b597a9a3f63f3f13f3d2118b7fea50ed28cd3\":-19,\"c1b975ff181d110d86dfda4dd790377a0cceb2674a55482cf170f208ed6be003\":-95,\"a474437595447eb672fb672897d5748c69036abcc496b6536e5f129b2c01ed92\":-118,\"af291687a7c54a49702e8f9eafc5eff1db585eda259ab61d0706635a735985c1\":-17}},\"s\":\"w7MZ373DWgzzRAHib8rWjBDDwUhkZp3RCyxN6Z9LWnC8B4_u3sV87Mi8A9mp-rmZA95AnLF1pN9UHra65NNEbkfZk6P5gVIqOQJKomM_u6eowPh8evrU_9iopfl-Sv4Ves1o2db6O9Fl8He8lknt4q1nYQaP10xnXSw2RZHFNxWGbimM9LtazcJ7Vl-pVTW_Kktc4jQfs3sHNFHst7nVyyqC8hlbaQG8bq3osWDYe2DsNnRNrW03-mhBte_G-wOj9BcdXA89xS4oua1870TZMlmTwzlJiNvQfEDbE_SMq7UvOKrFVcqWaqwCbOJc1Jh5kKqONoUGvKTmq_iUaIa7oAAAAVJqPZ-L\"}}}}"},
                   { "ui_metrics_seed", twiParam.metricsGetSet },
                   { "js_inst","1"},
                };
                var content = new FormUrlEncodedContent(values);
                var response = await client.PostAsync("https://twitter.com/sessions", content);
                var responseString = await response.Content.ReadAsStringAsync();

                Encoding sjisEnc2 = Encoding.GetEncoding("Shift_JIS");
                StreamWriter writer2 = new StreamWriter(@"sorce.txt", false, sjisEnc2);
                writer2.WriteLine(responseString);
                writer2.Close();

このように記述する事でこれまで問題なくログイン処理ができていたのですが、今朝から急にログインが出来なくなりました。
考えれる原因は、Twitterのログインページのパラメータが変わっているのではないかという事なのですが、自分で調べてみても解決が出来ませんでした。

Twitterへログインするという処理だけなのですが、このコードを読んで間違えを指摘して頂ける方はいらっしゃいませんでしょうか?かれこれ数時間色々と調べたりちょっとした修正を行ってみたりチャレンジをしているのですが、なかなか解決が出来ません。

是非アドバイス頂けると幸いです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

POSTで投げるパラメータの構成はかわってないようですので、twiParam.tokenGetSetあたりがとれてないんじゃないでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/03/26 19:17

    まったくその通りでした!アドバイス頂きましてありがとうございます!
    1つ1つしっかり見ていく事が肝心ですね!!ありがとうございます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • JavaScript

    16910questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • C#

    7382questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • jQuery

    6897questions

    jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

  • C

    3801questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • C++

    3567questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。