DotNetOpenAuth Twitter API版本1.1调用MVC4

时间:2013-01-17 09:14:56

标签: asp.net-mvc-4 twitter-oauth dotnetopenauth

我正在编写一个MVC4 Web应用程序,它必须查询Twitter Version 1.1 API。内置于MVC4中,当我在 AuthConfig.cs 中激活 OAuthWebSecurity.RegisterTwitterClient 时,我可以使用“使用Twitter登录”功能。然后,这会对Twitter登录进行身份验证,但我想要做的是授权用户,以便我可以代表用户进行API v1.1调用。

我在Stack Overflow上找到了this post,它使用自定义类来解决不同的问题(force_login参数问题),但我已经使用了这些类并将 UserAuthorizationEndpoint 更改为指向的OAuth /授权即可。我更改了这行代码:

UserAuthorizationEndpoint = new MessageReceivingEndpoint("https://api.twitter.com/oauth/authenticate", HttpDeliveryMethods.GetRequest | HttpDeliveryMethods.AuthorizationHeaderRequest),

到此:

UserAuthorizationEndpoint = new MessageReceivingEndpoint("https://api.twitter.com/oauth/authorize", HttpDeliveryMethods.GetRequest | HttpDeliveryMethods.AuthorizationHeaderRequest),

它适用于授权,这意味着现在我的应用程序授权Twitter用户。但是,当我调用API v1.1时,我收到'(401)Unauthorized'错误。这是我用于通话的代码:

var var1 = WebWorker.PrepareAuthorizedRequest(new MessageReceivingEndpoint("https://api.twitter.com/1.1/followers/ids.json?cursor=-1&screen_name=sitestreams", HttpDeliveryMethods.GetRequest), accessToken);
var var2 = var1.GetResponse();

我认为我还需要 oauth_token_secret 才能获得授权的电话。 DotNetOpenAuth可以给我 oauth_token_secret 吗?我可以再用吗 WebWorker.PrepareAuthorizedRequest 还发送 oauth_token_secret

我还在Stack Overflow上找到了this post,它说我不能使用DotNetOpenAuth。但是,DotNetOpenAuth代码已经更新了,我想知道它现在是否适合我想要做的事情,这本质上是一件非常简单的事情:允许用户使用Twitter登录我的Web应用程序,然后允许我的网络应用程序,以查看用户的关注者。

所以归结为:我可以在MVC4中使用 DotNetOpenAuth 来授权用户,然后代表用户调用Twitter API v1.1,例如 GET粉丝/ IDS 。如果可能,我该怎么做?

1 个答案:

答案 0 :(得分:2)

是的,DotNetOpenAuth绝对可以用于此。您可以下载包含OAuthConsumer项目的DotNetOpenAuth samples,其中包含一个Twitter.aspx页面,该页面显示了如何执行此操作。是的,它是Web表单而不是MVC,但翻译并不难。

您遇到问题的原因是因为您尝试在DotNetOpenAuth.AspNet命名空间中使用Microsoft提供的类,这些类是专门为身份验证而非授权而设计的。使用示例中的WebConsumer / TwitterConsumer类可以让您按照自己的要求进行操作。