我有以下
public class NewsFeedController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult TwitterCallback(string oauth_token, string oauth_verifier)
{
var requestToken = new OAuthRequestToken { Token = oauth_token };
string Key = "";
string Secret = "";
try
{
TwitterService service = new TwitterService(Key, Secret);
OAuthAccessToken accessToken = service.GetAccessToken(requestToken, oauth_verifier);
service.AuthenticateWith(accessToken.Token, accessToken.TokenSecret);
VerifyCredentialsOptions option = new VerifyCredentialsOptions();
TwitterUser user = service.VerifyCredentials(option);
String name = user.ScreenName;
ViewData["user_name"] = name;
}
catch
{
throw;
}
return View();
}
}
以下
@{
ViewData["Title"] = "TwitterCallback";
}
<h2>Hello, @ViewData["user_name"]</h2>
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
我的问题是NewsFeedController
没有呈现任何内容。它执行TwitterCallback
而不抛出异常,但它不返回任何视图。如果我将方法类型更改为String并返回ViewData["user_name"]
,则会显示正确的名称。因此,我想我已经以某种方式宣布了错误的观点。
我刚刚开始使用mvc,所以如果这听起来像是一个初学者问题我会道歉。
非常感谢任何帮助/提示!
项目结构:
这就是我得到的:(没有错误信息,没有)
编辑: 这就是调用回调URL的方式:(其中TwitterAuth是HomeController.cs中的一个方法,当用户单击登录按钮时调用它)
public ActionResult TwitterAuth()
{
string Key = "";
string Secret = "";
TwitterService service = new TwitterService(Key, Secret);
OAuthRequestToken requestToken = service.GetRequestToken("http://127.0.0.1:8080/NewsFeed/TwitterCallback");
Uri uri = service.GetAuthenticationUrl(requestToken);
return Redirect(uri.ToString());
}
EDIT2:谢谢大家的帮助。我仍然不明白为什么它首先不起作用(正如Andrei在评论中说的那样,这不是.net问题)我将我的推特库改为tweetinvi,现在它可以工作了。