Twitter(OAuth)for.NETを使用してログインするための実用的なサンプルを誰かが知っているのだろうか
私は現在これを使用していますhttp://www.voiceoftech.com/swhitley/?p=681
ただし、コールバックURLを「oob」に設定した場合にのみ機能します。実際のコールバックURLを設定すると、「401無許可」になります。
ありがとう!
Twitter(OAuth)for.NETを使用してログインするための実用的なサンプルを誰かが知っているのだろうか
私は現在これを使用していますhttp://www.voiceoftech.com/swhitley/?p=681
ただし、コールバックURLを「oob」に設定した場合にのみ機能します。実際のコールバックURLを設定すると、「401無許可」になります。
ありがとう!
既存のオプションが複雑すぎるため、このために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ヘッダーを生成し、上記のようにリクエストを行います。
http://www.voiceoftech.com/swhitley/?p=681で私の問題はすでに解決されています
アプリを「ブラウザ」として保存していましたが、コールバックURLを指定していなかったため、保存時に「クライアント」アプリに変換されました。
私は会話に遅れていますが、これと同じタスクを実行している他の人のためにビデオチュートリアルを作成しました。あなたのように、私は401エラーを理解するのがとても楽しかったです。
ビデオ:http ://www.youtube.com/watch?v = TGEA1sgMMqU
チュートリアル:http ://www.markhagan.me/Samples/Grant-Access-And-Tweet-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.");
}
}
}
}
}
「DotNetOpenAuth」はあなたにとって大きな助けになります。http://www.dotnetopenauth.net/
私はOAuth用のC#ライブラリを開発しました。これは、非常に使いやすく、起動して実行するのが非常に簡単です。このプロジェクトはオープンソースプロジェクトであり、1。Google 2. Twitter 3. Yahoo4.Vimeoに対して機能するデモアプリケーションを含めました。
もちろん、他のOAuthプロバイダーも同様に機能します。ここで記事とライブラリを見つけることができます