Asp.net mvc 4 MVC4中的DotNetOpenAuth Twitter API 1.1版调用

Asp.net mvc 4 MVC4中的DotNetOpenAuth Twitter API 1.1版调用,asp.net-mvc-4,twitter-oauth,dotnetopenauth,Asp.net Mvc 4,Twitter Oauth,Dotnetopenauth,我正在编写一个MVC4 Web应用程序,它必须查询Twitter 1.1版API。内置于MVC4中,我可以在AuthConfig.cs中激活OAuthWebSecurity.RegisterWitterClient时使用“使用Twitter登录”功能。然后,这将验证Twitter登录,但我要做的是授权用户,以便我可以代表用户进行API v1.1调用 我发现了堆栈溢出,它使用自定义类来解决一些不同的问题(force_login参数问题),但我使用了这些类并将UserAuthorizationEnd

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

我发现了堆栈溢出,它使用自定义类来解决一些不同的问题(force_login参数问题),但我使用了这些类并将UserAuthorizationEndpoint更改为指向oauth/authorization。我更改了这行代码:

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令牌密钥吗?那我可以用吗 WebWorker.PrepareAuthorizedRequest是否也发送oauth\u令牌\u secret

我还发现了堆栈溢出,上面说我不能使用DotNetOpenAuth来实现这一点。然而,DotNetOpenAuth代码自那时起已经更新,我想知道它现在是否满足了我想要做的事情,这本质上是一件非常简单的事情:允许用户使用Twitter登录我的web应用程序,然后允许我的web应用程序查看用户的追随者


因此可以归结为:我可以在MVC4中使用DotNetOpenAuth来授权用户,然后代表用户调用Twitter API v1.1,例如获取关注者/ID。如果可能,我该怎么做?

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

出现问题的原因是,您试图在
DotNetOpenAuth.AspNet
命名空间中使用Microsoft提供的类,这些类是严格为身份验证而不是授权而设计的。使用示例中的
WebConsumer
/
TwitterConsumer
类将允许您执行要求的操作