8

Twitter(OAuth)for.NETを使用してログインするための実用的なサンプルを誰かが知っているのだろうか

私は現在これを使用していますhttp://www.voiceoftech.com/swhitley/?p=681

ただし、コールバックURLを「oob」に設定した場合にのみ機能します。実際のコールバックURLを設定すると、「401無許可」になります。

ありがとう!

4

5 に答える 5

5

既存のオプションが複雑すぎるため、このためにOAuthマネージャーを作成しました。

.NETでの検証によるOAuth

このクラスはOAuthに焦点を当てており、特にTwitterで機能します。これは、TwitterのWebAPIの表面全体に大量のメソッドを公開するクラスではありません。ただのOAuthです。Twitterでステータスを更新する場合、このクラスは「UpdateStatus」メソッドを公開しません。アプリの設計者が送信したいHTTPメッセージを作成するのは簡単なことだと思いました。言い換えれば、HTTPメッセージAPIです。ただし、OAuthのものは少し複雑になる可能性があるため、APIに値します。これがOAuthクラスです。

「リクエストトークン」をリクエストするコード例は次のとおりです。

var oauth = new OAuth.Manager();
oauth["consumer_key"] = MY_APP_SPECIFIC_CONSUMER_KEY;
oauth["consumer_secret"] = MY_APP_SPECIFIC_CONSUMER_SECRET;    
oauth.AcquireRequestToken(SERVICE_SPECIFIC_REQUEST_TOKEN_URL, "POST");

それだけです。Twitterでは、トークンをリクエストするためのサービス固有のURLは「https://api.twitter.com/oauth/request_token」です。

リクエストトークンを取得したら、ユーザーがアプリに明示的に承認を与えるWebブラウザUIをポップして、Twitterにアクセスします。これは、アプリを初めて実行するときに1回行う必要があります。次のようなコードを使用して、埋め込みWebBrowserコントロールでこれを実行します。

var url = SERVICE_SPECIFIC_AUTHORIZE_URL_STUB + oauth["token"];
webBrowser1.Url = new Uri(url);

Twitterの場合、このURLは「https://api.twitter.com/oauth/authorize?oauth_token=」にoauth_tokenが追加されています。

HTML画面のスクレイピングを介して、WebブラウザのUIからピンを取得します。次に、「アクセストークン」をリクエストします。

oauth.AcquireAccessToken(URL_ACCESS_TOKEN,
                         "POST",
                         pin);

Twitterの場合、そのURLは「https://api.twitter.com/oauth/access_token」です。

アクセストークンを明示的に処理する必要はありません。OAuthManagerクラスは、それを状態に維持します。ただし、トークンとシークレットは、永続ストレージに書き留めたい場合に備えて、oauth["token"]とで使用できます。oauth["token_secret"]そのアクセストークンを使用してリクエストを行うには、次のようにauthzヘッダーを生成します。

var authzHeader = oauth.GenerateAuthzHeader(url, "POST");

...urlリソースエンドポイントはどこにありますか。Twitterでユーザーのステータスを更新するには、「http://api.twitter.com/1/statuses/update.xml?status=Hello」になります。

次に、結果の文字列をAuthorizationという名前のHTTPヘッダーに設定し、HTTPリクエストをURLに送信します。

以降の実行では、アクセストークンとシークレットが既にある場合、次のようにOAuth.Managerをインスタンス化できます。

var oauth = new OAuth.Manager();
oauth["consumer_key"] = MY_APP_SPECIFIC_CONSUMER_KEY;
oauth["consumer_secret"] = MY_APP_SPECIFIC_CONSUMER_SECRET;
oauth["token"] = your_stored_access_token;
oauth["token_secret"] = your_stored_access_secret;

次に、authzヘッダーを生成し、上記のようにリクエストを行います。

DLLをダウンロードするドキュメント
を 表示する

于 2011-02-27T14:30:50.970 に答える
2

http://www.voiceoftech.com/swhitley/?p=681で私の問題はすでに解決されています

アプリを「ブラウザ」として保存していましたが、コールバックURLを指定していなかったため、保存時に「クライアント」アプリに変換されました。

于 2011-01-27T17:27:22.617 に答える
2

私は会話に遅れていますが、これと同じタスクを実行している他の人のためにビデオチュートリアルを作成しました。あなたのように、私は401エラーを理解するのがとても楽しかったです。

ビデオ:http ://www.youtube.com/watch?v = TGEA1sgMMqU

チュートリアル:http ://www.markhagan.me/Samples/Grant-Access-And-Tw​​eet-As-Twitter-User-ASPNet

コード(このページを離れたくない場合):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Twitterizer;

namespace PostFansTwitter
{
    public partial class twconnect : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var oauth_consumer_key = "gjxG99ZA5jmJoB3FeXWJZA";
            var oauth_consumer_secret = "rsAAtEhVRrXUTNcwEecXqPyDHaOR4KjOuMkpb8g";

            if (Request["oauth_token"] == null)
            {
                OAuthTokenResponse reqToken = OAuthUtility.GetRequestToken(
                    oauth_consumer_key,
                    oauth_consumer_secret,
                    Request.Url.AbsoluteUri);

                Response.Redirect(string.Format("http://twitter.com/oauth/authorize?oauth_token={0}",
                    reqToken.Token));
            }
            else
            {
                string requestToken = Request["oauth_token"].ToString();
                string pin = Request["oauth_verifier"].ToString();

                var tokens = OAuthUtility.GetAccessToken(
                    oauth_consumer_key,
                    oauth_consumer_secret,
                    requestToken,
                    pin);

                OAuthTokens accesstoken = new OAuthTokens()
                {
                    AccessToken = tokens.Token,
                    AccessTokenSecret = tokens.TokenSecret,
                    ConsumerKey = oauth_consumer_key,
                    ConsumerSecret = oauth_consumer_secret
                };

                TwitterResponse<TwitterStatus> response = TwitterStatus.Update(
                    accesstoken,
                    "Testing!! It works (hopefully).");

                if (response.Result == RequestResult.Success)
                {
                    Response.Write("we did it!");
                }
                else
                {
                    Response.Write("it's all bad.");
                }
            }
        }
    }
}
于 2012-12-06T17:26:38.153 に答える
1

「DotNetOpenAuth」はあなたにとって大きな助けになります。http://www.dotnetopenauth.net/

于 2011-01-27T17:02:52.573 に答える
1

私はOAuth用のC#ライブラリを開発しました。これは、非常に使いやすく、起動して実行するのが非常に簡単です。このプロジェクトはオープンソースプロジェクトであり、1。Google 2. Twitter 3. Yahoo4.Vimeoに対して機能するデモアプリケーションを含めました。

もちろん、他のOAuthプロバイダーも同様に機能します。ここで記事とライブラリを見つけることができます

OAuth C#ライブラリ

于 2011-01-27T19:56:02.507 に答える