asp.net-mvc-4 – 在MVC4中调用DotNetOpenAuth Twitter API版本1.1

我正在编写一个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 / authorize.我更改了这行代码:

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应用程序,然后允许我的Web应用程序,以查看用户的关注者.

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

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

您遇到问题的原因是因为您尝试在DotNetOpenAuth.AspNet命名空间中使用Microsoft提供的类,这些类是专门为身份验证而非授权而设计的.使用样本中的WebConsumer / TwitterConsumer类将允许您执行您要求的操作.

点赞