我正在编写一个必须查询 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。如果可能,我该怎么做?