2

チュートリアルに従ってツイートをツイッターに投稿しようとしていますが、うまくいきません

http://www.dotnettutorials.com/tutorials/advanced/ASP-Twitter-Posting.aspx

彼らの別の方法ですか、それとも asp.net C# Web アプリケーションを使用して toppost ツイートする方法を示す良いチュートリアルを教えてくれる人がいれば

protected void Button1_Click(object sender, EventArgs e)
{
    string username = "YOUR_USER_NAME";
    string password = "YOUR_PASSWORD";
    string tweet = TextBox1.Text;

    try 
    {
        string user = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(username + ":" + password));  
        byte[] bytes = System.Text.Encoding.ASCII.GetBytes("status=" + tweet);
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://twitter.com/statuses/update.xml");

        request.Method="POST";
        request.ServicePoint.Expect100Continue = false;
        request.Headers.Add("Authorization", "Basic " + user);
        request.ContentType="application/x-www-form-urlencoded";
        request.ContentLength = bytes.Length;   

        Stream reqStream = request.GetRequestStream();
        reqStream.Write(bytes, 0, bytes.Length);
        reqStream.Close();
    } 
    catch (Exception ex) 
    {
        /* DO NOTHING */
    }
}
4

1 に答える 1

2

Twitter は何年も前に基本認証を廃止したため、これは古いチュートリアルです。最近では、Twitter がOAuth ドキュメントで説明している OAuth を使用する必要があります。独自の OAuth コードを記述したくない場合は、サード パーティのライブラリ (DotNetOpenAuth が思い浮かびます) を検索するか、Twitter ライブラリページで見つけることができる、これを行うライブラリを使用できます。

免責事項: LINQ to Twitterという名前のライブラリの 1 つを Twitter ライブラリ ページに書きました。

注: Twitter API v1.0 は非推奨になり、来月には無効になるため、Twitter API v1.1 をターゲットにすることをお勧めします。

また、問題が何であるかを理解するのに苦労しているように見えることにも気付きました. 私の推測では、Twitter から HTTP 401 Unauthorized 応答を受け取っていると思われます。リクエストで GetResponse() を呼び出した場合、この 401 レスポンスによって例外が発生しますが、リクエストをプッシュしているだけなので、コードでは発生していません。GetResponse を呼び出して、Twitter がコードにどのように反応したかを確認する必要があります。次に、catch ブロックのブレーク ポイントにヒットするか、応答をログに記録して、問題が何であるかを確認します。詳細情報を取得するために、例外のフィールドを調べる必要がある場合があります。もう 1 つの優れたデバッグ ツールは Fiddler です。これを使用すると、Twitter からの応答を調べることができます。FireBug と IE F12 ツールは他のオプションです (おそらくもっとあるでしょう) が、目標は Twitter が何を伝えているかを見ることです。

于 2013-02-12T19:54:41.833 に答える