我为此编写了一个OAuth管理器,因为现有的选项过于复杂。
.NET中带验证的OAuth
该类专注于OAuth,并与Twitter特别配合使用。这不是一个暴露了整个Twitter Web API表面上大量方法的类。它只是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。您需要在应用程序第一次运行时执行此操作。使用类似以下代码的嵌入式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中获取PIN。然后请求“访问令牌”。
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"。
然后将生成的字符串设置为HTTP标头Authorization,并将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;
然后生成授权头,按照上述描述进行请求。
下载
DLL
查看
文档