使用twitter登录验证用户

Sta*_*wer 8 .net c# asp.net twitter-oauth

我想知道有人知道使用Twitter(OAuth)for .NET登录的工作样本

我正在使用这个http://www.voiceoftech.com/swhitley/?p=681

但它只有在我将回调网址设置为"oob"时才有效,如果我设置了一个真正的回调网址,我会得到"401未授权".

谢谢!

Che*_*eso 5

我为此写了一个OAuth经理,因为现有的选项太复杂了.

在.NET中使用Verification验证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");
Run Code Online (Sandbox Code Playgroud)

就是这样.在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);
Run Code Online (Sandbox Code Playgroud)

对于Twitter,其URL为" https://api.twitter.com/oauth/authorize?oauth_token= ",并附加oauth_token.

通过一些HTML屏幕抓取从Web浏览器UI抓取引脚.然后请求"访问令牌":

oauth.AcquireAccessToken(URL_ACCESS_TOKEN,
                         "POST",
                         pin);
Run Code Online (Sandbox Code Playgroud)

对于Twitter,该URL是" https://api.twitter.com/oauth/access_token ".

您不需要显式处理访问令牌; OAuthManager类为您维护状态.但令牌和秘密是可用的oauth["token"]oauth["token_secret"],如果你想将其注销,以永久存储.要使用该访问令牌发出请求,请生成如下所示的authz标头:

var authzHeader = oauth.GenerateAuthzHeader(url, "POST");
Run Code Online (Sandbox Code Playgroud)

... url资源端点在哪里.要在Twitter上更新用户的状态,它将是" http://api.twitter.com/1/statuses/update.xml?status=Hello ".

然后将结果字符串设置为名为Authorization的HTTP Header ,并将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;
Run Code Online (Sandbox Code Playgroud)

然后只需生成authz标头,并按上述方式发出请求.

下载DLL
查看文档


Sta*_*wer 2

已经通过http://www.voiceoftech.com/swhitley/?p=681解决了我的问题

我将我的应用程序保存为“浏览器”,但由于我没有指定回调网址,因此在保存时将其转换为“客户端”应用程序。