4

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

我在 Stack Overflow 上找到了这篇文章,它使用自定义类来解决不同的问题(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 上找到了这篇文章,上面说我不能为此使用 DotNetOpenAuth。但是,从那以后 DotNetOpenAuth 代码已经更新,我想知道它现在是否适合我想做的事情,这本质上是一件非常简单的事情:允许用户使用 Twitter 登录我的 Web 应用程序,然后允许我的网络应用程序来查看用户的关注者。

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

4

1 回答 1

2

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

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

于 2013-02-07T04:56:44.167 回答