5


2

バウンティ質問

私はc#3.5ウィンドウフォームアプリケーションを使用しています。 私は受け入れられた答えで言及されたコードを使っています。 そして私はエラーを下回っています

*リモートサーバーからエラーが返されました:(401)Unauthorized。

  • UserNameとPasswordを確認するためのサンプルコードは本当にありがたいです*

バウンティ質問終了

'' '' '

次のユースケースのアプリケーションがあります。ユーザーが最初にアプリケーションを使用するときに、彼は自分のユーザー名とパスワードを入力します。 その後、ずっと後の段階で、アプリケーションは自分のステータスを更新することがあります。

現在私はTwitterizerを使用していますが、問題は私が使用している特定のライブラリの範囲を超えていると思います。 以下は、関連する2行のコードです。

Twitter Twitter = new Twitter( "ユーザー名"、 "パスワード"、 "ソース"); twitter.Status.Update( "update");

ユーザー名/パスワードが正しくない場合、Twitterオブジェクトの構築は例外をスローしません。 これはおそらくこの時点では何も送信されていないためです。 一方、ユーザー名/パスワードが無効な場合、ステータスの更新は例外をスローします。

私の問題は、アップデートを投稿しようとしているときではなく、ユーザー入力の時点でユーザー名/パスワードを検証したいということです。

何も投稿せずに(Twitterizerなどで)ユーザー名/パスワードを検証するにはどうすればよいですか。

6 Answer


6


peSHIrによって言及されているようにverify_credentials APIを簡単に見て、私はトリックをするように思われる小さなルーチンを書きました。 遅くなりましたが、私はそれを数回テストすることができたし、うまくいくようです。

私の関数では、HttpResponseCode.OKを受け取った場合はtrueを返し、それ以外のものを受け取った場合や例外がスローされた場合はfalseを返します。 twitterがuid / passwordを好まない場合、401エラーで例外がスローされます(未承認)。

public bool CheckTwitterCredentials(文字列UserName、文字列Password){//失敗を想定していますbool Result = false;

//例外を処理するためのtry exceptブロックtry {//ユーザー名をパスワード文字列でエンコードするUserPass = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(UserName ":" Password));

// HTTP Webリクエストオブジェクトを作成します。HttpWebRequest

//リクエストフラグを設定し、タイプを送信しますRequest.Method = "GET"; Request.ContentType = "application / x-www-form-urlencoded";

//エンコードされたユーザー名とパスワードで認証ヘッダーを追加しますRequest.Headers.Add( "Authorization"、 "Basic" UserPass);

// Twitterからの応答を処理するには、HttpWebResponseオブジェクトを使用します。HttpWebResponse WebResponse =(HttpWebResponse)Request.GetResponse();

// OKの応答があれば成功。Result = WebResponse.StatusCode == HttpStatusCode.OK; catch(Exception Ex){System.Diagnostics.Debug.WriteLine( "エラー:" Ex.Message);}} }

//成功/失敗を返します。 }


1


あなたは、API呼び出し account/verify_credentialsを使用することを試みることができました。 あなたが使っているAPIライブラリがすでにこれをサポートしていることを願っています。 Twitterは、サードパーティのプログラマーを本当に嫌っていることで悪名高いので、Twitterで何かをする十分な理由がない限り、遠慮してください。


0


私は他のTwitterライブラリを使用しましたが、それらのどれも有効性のためのユーザ名とパスワードのチェックをサポートしません。 認証を必要とするようなことをしない限り、Twitter APIにはユーザー名とパスワードを検証する機能がないためです。

あなたができることの一つは、友達リストや認証を必要とする他の方法を取得しようとすることです。


0


Twitter APIは、年間ユーザー名/パスワードをサポートしていません。 その代わりに、あなたはOAuthを持っています。これはユーザーにあなたのアプリケーションが彼らに代わって行動することを許可することを可能にします。 Twitterには account/verify_credentialsエンドポイントがあり、トークンを所有するユーザーがまだアプリを認証しているかどうかを確認できます。 これは、LINQ to Twitterを使用してこのエンドポイントを呼び出す方法の例です。

var accounts = twitterCtx.Accountのacctからacct.Type == AccountType.VerifyCredentialsを選択してacctを選択します。


0


@ joe-mayoさんに通知されたとおり、OAuthに切り替えなければなりません。 twitterは彼らのAPIのv1を期限切れにしました、そして彼らは以下のURL https://dev.twitter.com/docs/faq#17750でそれを文書化しました。


0


これは私が書いた関数で、C#でTwitterのユーザー名とパスワードを確認します。

パブリックbool isTwitterValid(文字列のユーザー名、文字列のパスワード){try {文字列ユーザー= Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(username ":" password)); HttpWebRequest要求=(HttpWebRequest)WebRequest.Create( "https://twitter.com/statuses/verify.xml");

request.Method = "POST"; request.ServicePoint.Expect100Continue = false; request.Headers.Add( "Authorization"、 "Basic" user); request.ContentType = "application / x-www-form-urlencoded"; WebResponse response = request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream()); string responseString = reader.ReadToEnd(); reader.Close(); } catch(Exception ex){if(ex.Message.Contains( "404")){trueを返します。 falseを返します。 }