验证用户
不知有人知道测井在使用Twitter(的OAuth)用于.NET验证用户
工作示例我目前使用这一个http://www.voiceoftech.com/swhitley/?p=681
但它仅适用如果我设置回调网址为“oob”,如果我设置一个真正的回调网址,我会得到“401未授权”。
谢谢!
已经解决了我的问题与http://www.voiceoftech.com/swhitley/?p=681
我救了我的应用程序为“浏览器”,但因为我不是一个especifying回调URL,它被改造为“客户端”的应用程序上节省。
我已经开发了一个用于OAuth的C#库,它非常易于使用,并且可以使用并运行。该项目是一个开源项目,我已经包含了演示程序,对 1.谷歌 2. Twitter的 3.雅虎 4. Vimeo的
当然,任何其他的OAuth提供者将做的一样好作品。你可以找到我写这一个OAuth经理的文章和图书馆在这里
,因为现有的选择是太复杂了。
OAuth with Verification in .NET
类侧重于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");
THAT'S IT。在Twitter中,用于请求令牌的服务特定URL是“https://api.twitter.com/oauth/request_token”。
一旦获得请求令牌,就会弹出Web浏览器UI,在该UI中用户将显式授予对您的应用程序的批准,以访问Twitter。第一次运行应用程序时,您需要这样做一次。这样做是一个嵌入式web浏览器控件的代码如下所示:
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”。
然后将生成的字符串设置到名为授权的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
查看Documentation
我迟到了谈话,但我已经创建了别人谁是有这个相同的任务的视频教程。就像你一样,我有很多的乐趣想弄清楚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.");
}
}
}
}
}
感谢您的回答,任何工作示例如何使用Twitter进行身份验证? – StackOverflower 2011-01-27 17:10:09
试试这个http://nerddinner.codeplex.com/ – Bonshington 2011-01-27 17:41:25